我需要在每次重新启动后一分钟执行我的脚本。当我在 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 中执行此操作。