Crontab 作业依赖性以防止竞争

Crontab 作业依赖性以防止竞争

我想每 5 分钟运行一次 cron,但是如果前一个 cron 尚未完成,我不希望运行下一个 cron。

对此该怎么办? 有没有什么工具可以支持这一点?

谢谢

答案1

使用

flock -n /path/to/lockfile -c "command_you_want_to_run"

答案2

您可以使用 run-one 命令。它会自动为正在运行的命令创建一个锁定文件。

run-one rsync -a mirror.kernel.org::everything /my/hd

行为与 flock 类似,但语法更清晰。缺点是可能需要安装命令才能使用。另外,修改命令行时应特别注意,当命令行更改时,锁文件名也会更改

答案3

Cron 不支持任何类型的作业依赖项。您放入其中的条目会在指定时间运行。

您必须采用一些简单的联锁方案。将给定的命令或命令集放入包含锁定方案的包装器脚本中。

或者像较大的站点那样,安装某种类型的作业调度应用程序并使用它有条件地运行应用程序。

相关内容