每 5 秒重复一次脚本,不与 crontab 和 watch 的现有运行重叠

每 5 秒重复一次脚本,不与 crontab 和 watch 的现有运行重叠

我知道 crontab 只能精确到分钟地安排任务,如果要安排超过 60 秒的间隔,则必须选择其他方法。我的理解是watch等待进程完成后再启动另一个进程。crontab 和 watch 可以合并吗?或者这真的是个糟糕的主意?

* * * * * /usr/bin/flock -n /tmp/script.lockfile /usr/bin/watch -n 5 /usr/bin/php /home/user/script.php

从概念上讲,我们使用 flock 创建一个锁定文件,以防止 cron 重新启动 watch 命令,否则该命令将每 60 秒启动一次。然后 Watch 启动并保持脚本每 5 秒运行一次。

答案1

我不知道这是否真的很可怕,但如果你看看当前的实现,你会注意到最终结果是watch(第一个)永远运行。

当发生这种情况时,您正在要求 cron 运行flock -n,这将总是失败,因为watch它将永远运行,保持原始锁处于活动状态。

如果它是需要一直运行的(从 cron 条目来看是这样的),您可以考虑watch在启动时运行它(或带有睡眠的循环脚本)。

相关内容