如何在@reboot 后 1 分钟开始 Cron 作业?

Yur*_*j73 66 cron sleep

我需要在每次重新启动后一分钟执行我的脚本。当我@reboot在我的 crontab 中申请时,我的脚本为时过早 - 我希望脚本在重新启动时常规运行的所有其他任务之后执行。重新启动后如何运行脚本?

D_B*_*Bye 100

该脚本是否只打算在启动后一分钟运行,或者也可以在其他时间使用?在前一种情况下,您可以添加sleep 60到脚本的开头,或者在后一种情况下,将其添加到 crontab 文件中:

@reboot sleep 60 && my_script.sh
Run Code Online (Sandbox Code Playgroud)

但是,正如 sr_ 所指出的,也许您以错误的方式解决了这个问题,而适当的 init.d 或 rc.d 脚本将是一个更强大的解决方案。


Env*_*vek 21

例如,如果您需要在网络可用时重新启动后执行某些操作,例如,您可以编写将在所需时间执行的 systemd 单元(当然这仅适用于具有 systemd 的系统)。

为此,请创建/etc/systemd/system/my_script.service具有以下内容的文件:

[Unit]
Description=My script that requires network
After=network.target

[Service]
Type=oneshot
ExecStart=/full/path/to/my_script.sh

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

然后执行:

sudo systemctl daemon-reload
sudo systemctl enable my_script
Run Code Online (Sandbox Code Playgroud)

你完成了!

  • ...对于那些不讨厌 systemd 的人:) (2认同)

cla*_*cke 16

我会使用at. 如:

@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.
Run Code Online (Sandbox Code Playgroud)

...加上提到的警告,如果您真正想要的是在所有其他事情之后运行它,您应该检查如何在您的操作系统正在使用的 init 中执行此操作。