如何在 @reboot 后 1 分钟启动 Cron 作业?

如何在 @reboot 后 1 分钟启动 Cron 作业?

我需要在每次重新启动后一分钟执行我的脚本。当我在 crontab 中应用时,@reboot对于我的脚本来说还为时过早 - 我希望在重新启动时例行运行的所有其他任务之后执行该脚本。我如何在重新启动后运行该脚本?

答案1

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

@reboot sleep 60 && my_script.sh

不过,正如 sr_ 所指出的,也许您正在以错误的方式解决这个问题,并且正确的 init.d 或 rc.d 脚本将是更可靠的解决方案。

答案2

例如,如果您需要在重新启动后网络可用时执行某些操作,您可以编写将在需要的时间执行的 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

然后执行:

sudo systemctl daemon-reload
sudo systemctl enable my_script

你完成了!

答案3

我会用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.

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

相关内容