前言
crontab是unix和linux用於設定週期性被執行的指令,是網際網路很常用的技術,很多任務都會設定在crontab迴圈執行,如果不使用crontab,那麼任務就是常駐程式,這對你的程式要求比較高,乙個要求你的程式是24x7小時不宕機,乙個是 要求你的排程程式比較可靠,實際工作中,90%的程式都沒有必要花這麼多時間和精力去解決上面的兩個問題的,只需要寫好自己的業務邏輯,通過crond這 個工業級程式去排程就行了,crond的可靠性,健壯性,大家應該是毫無疑問的。
crontab的格式講解
每項工作 (每行) 的格式都是具有六個字段,這六個欄位的意義為:
代表意義
分鐘小時
日期(天)月份周
命令數字範圍
0-59
0-23
1-31
1-12
0-7呀就命令啊
比較有趣的是那個『周』喔!周的數字為 0
或 7時,都代表『星期天』的意思!另外, 還有一些輔助的字元,大概有底下這些:
特殊字元
代表意義
*(星號)
代表任何時刻都接受的意思!舉例來說,範例一內那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執行後續命令』的意思!
,(逗號)
代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:
0 3,6 * * * command時間引數還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
-(減號)
代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:
20 8-12 * * * command仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
/n(斜線)
那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:
*/5 * * * * command很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!
周與日月不可同時並存
另乙個需要注意的地方在於:『你可以分別以周或者是日月為單位作為迴圈,但你不可使用「幾月幾號且為星期幾」的模式工作』。 這個意思是說,你不可以這樣編寫乙個工作排程:
1
30 12 11 9 5 root
echo
"just test"
<==這是錯誤的寫法
本來你以為九月十一號且為星期五才會進行這項工作,無奈的是,系統可能會判定每個星期五作一次,或每年的 9 月 11 號分別進行,如此一來與你當初的規劃就不一樣了~所以羅,得要注意這個地方!上述的寫法是不對的!
centos下檢視crontab執行歷史記錄
在crontab中新增了定時任務,但發現沒有得到期望的結果,因而懷疑是crontab沒有執行相應的任務,但怎麼定位crontab是否執行呢?
這就需要檢視crontab的執行歷史記錄,具體位置如下:
1
cd
/var/log
2
tail
-100
cron
在cron檔案中即可查閱已經操作過的相關定時任務。
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令
* * * * * mycommand
3,15 * * * * mycommand
3,15 8-11 * * * mycommand
3,15 8-11 */2 * * mycommand
3,15 8-11 * * 1 mycommand
30 21 * * * /etc/init.d/smb restart
45 4 1,10,22 * * /etc/init.d/smb restart
10 1 * * 6,0 /etc/init.d/smb restart
0,30 18-23 * * * /etc/init.d/smb restart
0 23 * * 6 /etc/init.d/smb restart
* */1 * * * /etc/init.d/smb restart
* 23-7/1 * * * /etc/init.d/smb restart
crontab定時任務
今天工作項有個任務是讓ubuntu定時執行某個指令碼,對postgresql資料庫進行定時備份。linux 系統都有個cron定時任務的機制。今天做些筆記,以便日後翻查。注意 cron機制是有個使用者系統的概念的,即分系統cron和使用者cron,每個使用者所執行的cron任務可能不同。1.以roo...
crontab定時任務
基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59 每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示日期1 31 第4列表示月份1 12 第5列標識號星期0 6 0表示星期天 第6列要執行的命令 我的需求是定時備份mongodb 編寫任務執行的指令碼ba...
Crontab定時任務
我們可以使用crontab執行一些週期任務 crontab u user file crontab u user 將file做為crontab的任務列表檔案並載入crontab 編輯crontab檔案內容 顯示crontab檔案內容 刪除載入後的crontab檔案內容 每分鐘向使用者目錄下的log....