2017-09-01 68 views

回答

0

克朗不添加時間間隔的小時數和分鐘數。 */53 */1 * * *以1:53,2:53,3:53等運行。

您必須創建單獨的時間表。對於53分鐘的時間間隔,該組將如下所示:

0 0 * * * /myscrop.sh 
53 0 * * * /myscrop.sh 
46 1 * * * /myscrop.sh 
39 2 * * * /myscrop.sh 
32 3 * * * /myscrop.sh 
25 4 * * * /myscrop.sh 
18 5 * * * /myscrop.sh 
11 6 * * * /myscrop.sh 
4 7 * * * /myscrop.sh 
57 7 * * * /myscrop.sh 
50 8 * * * /myscrop.sh 
43 9 * * * /myscrop.sh 
36 10 * * * /myscrop.sh 
29 11 * * * /myscrop.sh 
22 12 * * * /myscrop.sh 
15 13 * * * /myscrop.sh 
8 14 * * * /myscrop.sh 
1 15 * * * /myscrop.sh 
54 15 * * * /myscrop.sh 
47 16 * * * /myscrop.sh 
40 17 * * * /myscrop.sh 
33 18 * * * /myscrop.sh 
26 19 * * * /myscrop.sh 
19 20 * * * /myscrop.sh 
12 21 * * * /myscrop.sh 
5 22 * * * /myscrop.sh 
58 22 * * * /myscrop.sh 
51 23 * * * /myscrop.sh 

並注意間隔總是在一天的開始時重新開始。

1

對於「常規」crontab條目,如果沒有大量條目,這將非常困難。

既然你想你的工作,每天都在發生1H:53米(113米),你可能只是能夠爲每分鐘運行,但用合適的步長值,是這樣的:

*/113 * * * command-to-run 

儘管我從來沒有用這樣的大跳過值來測試它。

如果可行,這可能是最簡單的解決方案。

如果你在這工作的環境中運行,可以恢復到實際運行腳本的每一分鐘,但有它決定它是否確實的實際「有效載荷」的伎倆任務。

爲此,請使用狀態文件記錄上次運行有效負載的時間。雖然腳本本身運行頻繁,但只有在自上次傳遞以來足夠長的時間後,纔會運行有效載荷。

例如,下面的腳本只運行有效載荷(最終echo)每7秒鐘,不管腳本是如何經常被稱爲:

#!/bin/bash 

# Configuration items. 

stateFile=/tmp/lastPayload # File holding time of last payload run. 
minGap=7     # How often payload should run (seconds). 

# Get last payload time (checks for non-valid data). 

((lastTime = 0)) 
[[ -f ${stateFile} ]] && lastTime="$(cat ${stateFile})" 
[[ "${lastTime}" =~ [1-9][0-9]* ]] || ((lastTime = 0)) 

# Exit if not enough time since last payload run. 

thisTime=$(date +%s) 
((timeGap = thisTime - lastTime)) 
[[ ${timeGap} -lt ${minGap} ]] && exit 

# Update last payload run time and execute payload. 

echo ${thisTime} >${stateFile} 
echo "[${lastTime}] [${thisTime}] [${timeGap}]" 

如果腳本名爲test_periodic.sh,可對其進行測試搭配:

while true ; do ./test_periodic.sh ; sleep 1 ; done 

這將運行它的每一秒,但你會發現有效載荷僅每7秒鐘(除第一次外)完成的,如預期:

[0] [1504041523] [1504041523] 
[1504041523] [1504041530] [7] 
[1504041530] [1504041537] [7] 
[1504041537] [1504041544] [7] 

對於1h:53m,將minGap設置爲6780(113分鐘,以秒爲單位)並且每分鐘都有cron運行腳本。