1. 程式人生 > 其它 >Ubuntu下用crontab 部署定時任務

Ubuntu下用crontab 部署定時任務

crontab命令常見於Unix和類Unix的作業系統之中,用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於“crontab”檔案中,以供之後讀取和執行。通俗來講就是執行定時任務的一個命令。

1.crontab的安裝以及服務的開啟

第一步:檢查你得伺服器上是否安裝了crontab

rpm -qa | grep crontab

若沒有,首先就在伺服器上安裝

 apt-get install cron

第二步:開啟定時任務

執行:crontab –e
然後進入一個可編輯的檔案,編寫定時任務:
*/1 * * * * /usr/bin/python /python/asch-check.py

以上程式碼的寓意為:表示1分鐘執行一次asch-check.py指令碼

第三步:啟動服務

service cron start

第四步:檢視定時任務

crontab -l #檢視定時任務

2.安裝日誌服務rsyslog

第一步:安裝 rsyslog

apt-get install rsyslog

第二步:啟動日誌

service rsyslog start

第三步:編輯設定

vi /etc/rsyslog.d/50-default.conf

cron.*              /var/log/cron.log #將cron前面的註釋符去掉 

第四步:重啟

service rsyslog restart

第五步:檢視cron執行任務和日誌:

crontab -l #檢視定時任務

等到時間到了之後,發現定時任務未執行

tail -f/var/log/cron.log 檢視日誌

3.cron常用的命令

crontab file [-u user]-用指定的檔案替代目前的crontab。
crontab-[-u user]-用標準輸入替代目前的crontab.
crontab-1[user]-列出使用者目前的crontab.
crontab-e[user]-編輯使用者目前的crontab.
crontab-d[user]-刪除使用者目前的crontab.
crontab-c dir- 指定crontab的目錄。
eg:
service cron start     //啟動服務

service cron stop      //關閉服務

service cron restart   //重啟服務

service cron reload    //重新載入配置

service cron status    //檢視crontab服務狀態

crontab –l  //檢視定時任務

4.常用的週期格式


每五分鐘執行 */5 * * * *

每小時執行    0 * * * *

每天執行        0 0 * * *

每週執行       0 0 * * 0

每月執行        0 0 1 * *

每年執行       0 0 1 1 *

每分鐘執行一次  * * * * * user command

每隔2小時執行一次**/2 ** * user command (/表示頻率)

每天8:30分執行一次308 * * * user command

每小時的30和50分各執行一次   30,50 * * * * user command(,表示並列)

每個月的3號到6號的8:30執行一次  30 8 3-6 * * user command (-表示範圍)

每個星期一的 8:30 執行一次   30 8 * * 1 user command (周的範圍為0-7,0和7代表週日)

eg:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart #每晚的21:30重啟apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart #每月1、10、22日的4 : 45重啟apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart #每週六、週日的1 : 10重啟apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart #每天18 : 00至23 : 00之間每隔30分鐘重啟apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart #每星期六的11 : 00 pm重啟apache。
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart #每一小時重啟apache
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart #晚上11點到早上7點之間,每隔一小時重啟apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart #每月的4號與每週一到週三的11點重啟apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart #一月一號的4點重啟apache