每 5 分钟 Cron 几个脚本,每个脚本之间间隔 10 秒

每 5 分钟 Cron 几个脚本,每个脚本之间间隔 10 秒

我的 中有几个文件设置crontab,所有这些脚本必须每 5 分钟运行一次。
当这些脚本一次需要大量 CPU 和 IO 并且机器变得不可用时,问题就会出现。

为了减轻这种影响,我想知道是否有一个选项可以在每个脚本启动之间放置 10 秒。当所有这些脚本有太多数据需要处理时,它应该能够利用我们发出的负载大幅增加(对于单核来说超过 40)。

是否有可能以某种方式在 crontab 中每 5 分钟安排一次脚本,而不是在所有脚本的第五分钟开始时开始?

答案1

创建一个 cron 条目:

*/5 * * * * processA ; sleep 10 ; processB ; sleep 10 ; process C

但是,我建议不要这样做。

我根本不会使用 cron。 Cron 没那么聪明。如果您让它每 5 分钟运行一次作业,而该作业需要 6 分钟才能运行,那么您将运行 2 个进程。到一天结束时,您将同时运行数十或数百个此类进程。

更安全的方法是不使用 cron。相反,运行这样的脚本。使用systemd或/etc/init.d脚本将其变成始终运行的“服务”:

while true ; do
   processA
   sleep 10
   processB
   sleep 10
   processC
   sleep 600
done

可以在这里找到更长的解释:

如何不使用 Cron

答案2

cron 没有选择以秒为单位的选项。相反,请使用sleep.

例如,如果这些都是 shell 脚本:

  1. 像往常一样设置第一个脚本的 cron。
  2. 添加sleep 10到第二个脚本,以便在 10 秒后开始实际执行。
  3. 添加sleep 20到第三个......等等。

相关内容