每次启动我的树莓派时,我都想更新和升级它。在此之前不应运行其他 cronjob。我的 crontab 现在看起来像这样
@reboot sudo apt-get update && sudo apt-get upgrade -y
*/9 * * * * (python script1.py) &
*/4 * * * * (python script2.py) &
我如何让 script1 和 script2 等待?
答案1
Cron 不允许/提供本机机制来安排或延迟第二项作业,直到第一项作业成功完成。
典型的解决方案是创建 1 个调用单个 shell 脚本的 cron 作业,然后在该脚本中依次执行两个作业,并检查第一个作业的退出状态,以防止在第一个作业失败时启动第二个作业。
或者向每个作业添加锁定文件逻辑,以确保如果依赖项仍然持有锁定,则批处理的第一次运行将直接退出,而不执行实际的 cron 作业https://serverfault.com/a/82863/546643
在您的情况下,不要使用 cron 来更新您的服务器,而是从专用的启动作业(在 systemd 中)执行此操作,并延迟 cron 守护程序的启动,直到该更新作业完成。