我有一个作业应该每 10 秒运行一次,然后我还有另一个作业应该每 60 秒运行一次。然而,似乎应该每 10 秒运行一次的作业只运行了后每 60 秒运行一次...所以从技术上讲它每分钟只运行一次。
它们的顺序如下:
* * * * * ( sleep 10 ; /bin/bash -l -c 'ruby /root/script.rb')
0 * * * * /bin/bash -l -c 'ruby /root/another_script.rb'
我以为如果需要的话,这些会并行运行。显然我一定做错了什么。
任何帮助将不胜感激。
答案1
这些是 cron 字段(来自man -i 5 crontab
):
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
如您所见,没有“秒”字段。要每 10 秒运行一次作业,您必须在脚本中使用循环。一种选择是每分钟从 cron 运行脚本,并让脚本在 0、10、20、30、40 和 50 秒运行。
以下是可用于该脚本的模板:
for i in $(seq 0 5); do echo $i; sleep 10; done