2017-07-16 163 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 
相關問題