我想執行一個cronjob每隔1小時X分鐘添加作業cron和執行每1h和X分鐘
我嘗試添加到crontab中:
*/53 */1 * * * /myscrop.sh
但執行憑證每隔53分鐘,而不是1小時53分鐘
我想執行一個cronjob每隔1小時X分鐘添加作業cron和執行每1h和X分鐘
我嘗試添加到crontab中:
*/53 */1 * * * /myscrop.sh
但執行憑證每隔53分鐘,而不是1小時53分鐘
克朗不添加時間間隔的小時數和分鐘數。 */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
並注意間隔總是在一天的開始時重新開始。
對於「常規」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
運行腳本。