【问题标题】:How to Run a Shell script from Boot up to shutdown continuously如何从启动到连续关闭运行 Shell 脚本
【发布时间】:2022-01-17 12:15:05
【问题描述】:

我搜索了很多,但我找不到正确的。抱歉重复的问题(也许)。我正在使用 Linux Ubuntu 18.04 问题是:-

我需要运行一个 python 文件,它本身在一个循环中检查时间并每隔半小时打个招呼。我将该文件及其路径包含在 .sh 文件 中。 现在我需要从 Boot up 运行这个 sh 文件以连续关闭并问候用户。

另一个问题:我尝试使用 crontab,但它在启动时不起作用。我分配了 30 分钟的间隔。所以每个 1:00、1:30、2:00、2:30 都在工作,如果我在 1:15 打开它没有显示任何输出。它一直等到 1:30 才能到达。

所以请给我一个很好的方法来解决我的第一个问题,如果第二个问题有解决方案,请也推荐它......

感谢回复

【问题讨论】:

  • 你可以将@reboot /your/script.sh与Crontab一起使用,另外一行可以是*/30 * * * * /your/script.sh
  • @reboot 将继续脚本还是在第一次执行后结束?如果我在脚本中保持 while True
  • @reboot 将执行一次,但第二条规则/行将在每 30 分钟标记处执行一次..
  • 其实第一个和第二个问题到底是什么?您在编写或运行守护程序时遇到问题吗?

标签: python linux bash sh


【解决方案1】:

您可以使用 systemd 或服务, 但你也可以使用 Crontab:

@reboot /your/script.sh
*/30 * * * * /your/script.sh

【讨论】:

  • 好的。谢谢你。我会试试的。
  • @SreevalsanJeyakrishnan 如果此答案解决了您的问题,请务必将其标记为解决方案
【解决方案2】:

我会选择 systemd-timers:https://wiki.archlinux.org/title/Systemd/Timers

它简单、便携,并且提供了许多不同的方式来配置启动时间和重复时间。

【讨论】:

  • 我想每半小时运行一次脚本。我已经有了脚本。
  • @SreevalsanJeyakrishnan:什么反对使用 Systemd/Timers?在它的常见问题解答中,您可以找到如何安排它在启动时首先运行它。
【解决方案3】:

您需要记住,为了在指定的时间或间隔运行 systemd 服务,您需要两个 systemd 单元:

  1. 将执行您的脚本的 systemd 服务 单元。您可以查看this answer 了解如何设置 systemd 服务(对于您的特定用例,请跳过最后一步,即不要启动您的服务单元)。

  2. 一个计时器单元,它将定义您的服务单元何时运行。

最好将服务单元和计时器单元命名为相同的名称,例如,如果您有my_service.service,您将在my_service.timer 中配置计时器单元。

计时器单元文件应如下所示:

[Unit]
Description=Run script every 30 minutes

[Timer]
Unit=my_service.service
OnCalendar=*:0/30

[Install]
WantedBy=timers.target

您需要确保OnCalendar 变量配置正确。有一些在线生成器可以为您想要的间隔获得正确的表达。 此外,@Andreas 提出的文档可能是了解如何设置此变量,更重要的是了解 systemd 服务和计时器如何工作的一个很好的切入点。

请记住,在进行所有这些更改后,您需要重新加载守护程序:

systemctl daemon-reload

最后,您只需要enablestart 定时器单元(定时器单元)。所以,按照前面的符号:

systemctl enable my_service.timer
systemctl start my_service.timer

文档

您可以在此处阅读有关这些主题的更多信息:
Systemd services
Systemd timers

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 1970-01-01
    • 2014-07-31
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    相关资源
    最近更新 更多