如何安排在 linux 中每 10 秒运行一次的 cron 作业?

Ale*_*lex 17 linux unix

我知道每分钟如何做,但每 10 秒如何?

WeS*_*See 26

上周我有一个类似的任务。我的解决方案是将标准 cron 条目乘以所需的频率。我的 crontab 看起来像:

* * * * * /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 10; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 20; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 30; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 40; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 50; /usr/local/bin/php /var/www/myscript.php
Run Code Online (Sandbox Code Playgroud)

如果您想检查 myscript.php 的结果,例如用于调试,只需附加

&> /tmp/myscipt.log
Run Code Online (Sandbox Code Playgroud)

到上面 crontab 中的每一行。然后 stderr 和 stdout 被重定向到日志文件。

  • +1 用于创造性的 cron 使用 (2认同)
  • 恕我直言,这是最好的解决方案。它在做什么很清楚,不需要脚本或第三方解决方案。 (2认同)

Mic*_*ael 11

您不能每 10 秒安排一次作业,但我想您可以将作业安排为每分钟运行一次,并以 10 秒为间隔循环睡眠。这将基于您的命令在 10 秒间隔到期之前完成,否则在下一个命令运行时您将获得重叠。这感觉像是一个不稳定的解决方案,但如果您能保证脚本的主要命令的执行时间非常短,它就会起作用。

#!/bin/bash
i=0

while [ $i -lt 6 ]; do
  /run/your/command &
  sleep 10
  i=$(( i + 1 ))
done
Run Code Online (Sandbox Code Playgroud)