2017-07-16 110 views
-2

我有几个需要运行的提取脚本,但是我不能(也不想)一次运行它们。CRON每45分钟运行脚本但不是全部同时运行

我想每45分钟运行一次,但不是全部同时运行。相反,每个偏移1分钟。

Bash脚本被拒绝了,他们可以冻结,并且我想要在一分钟后运行下一个脚本,即使第一个脚本已经冻结或未被完成。

我知道*/45是每45分钟,但如果我改变第一asteriks的值,如:

0/45 * * * * root /home/rrr/bash_devel/echo.sh 
35/45 * * * * root /home/rrr/bash_devel/echo.sh 
40/45 * * * * root /home/rrr/bash_devel/echo.sh 

这似乎并没有工作。

有没有办法如何实现这一目标?或者比CRON更好的工具?

+0

这可能帮助:?如何设定cron来运行我的脚本每40分钟/ 25分钟(https://stackoverflow.com/q/8181949/ 3776858) – Cyrus

回答

0

用cron没有办法做到这一点:前五个字段没有简单的模式,允许“每45分钟”。

您可以让作业脚本每45分钟运行一次,并使用cron来启动它们。例如,如果您创建了运行echo.sh的脚本“repeatFourTimes.sh”,等待45分钟,然后再次运行,等待并最后一次运行它,那么您的crontab可能会有这样的行:

1 */3 * * * repeatFourTimes.sh echo.sh 
2 */3 * * * repeatFourTimes.sh echo.sh 

所以,你会得到的序列是这样的:

12.01 cron runs repeatFourTimes, kicking off echo.sh immediately 
12.02 cron runs repeatFourTimes, kicking off echo.sh immediately 
12.46 first repeatFourTimes kicks off echo.sh again 
12.47 second repeatFourTimes kicks off echo.sh again 
13.31 first repeatFourTimes kicks off echo.sh again 
13.32 second repeatFourTimes kicks off echo.sh again 
14.16 first repeatFourTimes kicks off echo.sh again then finishes 
14.17 second repeatFourTimes kicks off echo.sh again then finishes 
15.01 cron runs repeatFourTimes, kicking off echo.sh immediately 
15.02 cron runs repeatFourTimes, kicking off echo.sh immediately 
... 

理想显然远。例如,如果脚本崩溃,您可能会错过几个小时的echo.sh.如果你在cron中完成了所有的事情,每3个小时周期就有4行,那么你就要以更大的crontab为代价来避免这种风险。

1

要运行一个脚本,每45分钟:

0 0-23/3 * * * root /home/rrr/bash_devel/echo.sh 
45 0-23/3 * * * root /home/rrr/bash_devel/echo.sh 
30 1-23/3 * * * root /home/rrr/bash_devel/echo.sh 
15 2-23/3 * * * root /home/rrr/bash_devel/echo.sh 
相关问题