我有几个需要运行的提取脚本,但我不能(也不想)一次性运行它们。
我想每45分钟运行一次,但不是同时运行。相反,每个偏移1分钟。
Bash脚本被拒绝了,它们可以冻结,我想在分钟后运行下一个,即使第一个已经冻结或者还没有被finsihed。
我知道*/45
每45分钟一次,但是如果我按照值更改第一个星号,就像这样:
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 :(得分: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
答案 1 :(得分: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个小时循环就有四行,那么你就可以以更大的crontab为代价来避免这种风险。