cron作业执行脚本是否相互抵消
Does cron job executing script cancel each other
我无法理解这个概念
如果 cron 作业设置为每 5 分钟执行一次特定的脚本,而脚本正在执行的任务恰好很长
如果 cron 作业在 5 分钟后重新执行脚本并且脚本未完成执行先前的任务会发生什么,这会导致先前的任务中止并重新启动
或者服务器是否知道它应该将其排队并在重新执行脚本之前等待先前的任务
两者都不是。两个任务重叠,同时运行
Cron 作业不会相互取消,除非它们尝试锁定和访问相同的文件,或者脚本有其他一些冲突。不过,如果你愿意,你当然可以让它们相互抵消。
服务器 none 更聪明,任务不会等待以前的执行,除非您明确添加此类详细信息,例如,使用 flock
或 pgrep
检查以前的执行仍在 运行ning.
cron 选项卡中的以下示例条目检查脚本是否已经 运行ning,如果脚本 (cron.sh) 尚未 运行,则仅检查 运行s ]宁.
* * * * * /usr/bin/pgrep -f /path/to/cron.sh > /dev/null 2> /dev/null || /path/to/cron.sh
我无法理解这个概念
如果 cron 作业设置为每 5 分钟执行一次特定的脚本,而脚本正在执行的任务恰好很长
如果 cron 作业在 5 分钟后重新执行脚本并且脚本未完成执行先前的任务会发生什么,这会导致先前的任务中止并重新启动
或者服务器是否知道它应该将其排队并在重新执行脚本之前等待先前的任务
两者都不是。两个任务重叠,同时运行
Cron 作业不会相互取消,除非它们尝试锁定和访问相同的文件,或者脚本有其他一些冲突。不过,如果你愿意,你当然可以让它们相互抵消。
服务器 none 更聪明,任务不会等待以前的执行,除非您明确添加此类详细信息,例如,使用 flock
或 pgrep
检查以前的执行仍在 运行ning.
cron 选项卡中的以下示例条目检查脚本是否已经 运行ning,如果脚本 (cron.sh) 尚未 运行,则仅检查 运行s ]宁.
* * * * * /usr/bin/pgrep -f /path/to/cron.sh > /dev/null 2> /dev/null || /path/to/cron.sh