1. 程式人生 > 實用技巧 >linux - crontab 定時任務

linux - crontab 定時任務

linux內建的cron可以幫我們實現定時任務(備份資料庫資料、刪除服務日誌等),cron + shell指令碼,再複雜的指令都沒有問題。

1. 相關配置檔案:

/var/spool/cron:該目錄下,存放的是每個使用者(包括root)的crontab任務,每個任務以建立者的名字命名

/etc/crontab:該檔案裡,存放的是系統任務的任務列表

/etc/cron.d、/etc/cron.daily、/etc/cron.weekly...:這些目錄下,存放任何要執行的crontab檔案或指令碼(平時不太用到)

2. crontab命令使用

crontab [-u username] //省略則表示當前使用者

-e:編輯工作表

-l:列出工作表

-r:刪除工作表

3. crontab檔案說明

crontab -e進入當前使用者的工作表編輯,實際上就是/var/spool/cron/root(當前為root使用者)檔案,每一行是一條命令。crontab的命令構成為:時間+動作。

格式:

minute hour day month dayofweek command

時間:

分、時、日、月、周,共5種

操作符:

* 取值範圍內的所有數字

/ 每過多少各數字

- 從A到B

,雜湊數字

例項:

* * * * * myCommand     # 每1分鐘執行一次myCommand
3,15 * * * * myCommand     # 每小時的第3和第15分鐘執行
3,15 8-11 * * * myCommand # 在上午8點到11點的第3和第15分鐘執行 3,15 8-11 */2 * * myCommand # 每隔兩天的上午8點到11點的第3和第15分鐘執行 3,15 8-11 * * 1 myCommand # 每週一上午8點到11點的第3和第15分鐘執行 30 21 * * * myCommand # 每晚的21:30執行 45 4 1,10,22 * * myCommand # 每月1、10、22日的4 : 45執行 10 1 * * 6,0 myCommand # 每週六、週日的1 : 10執行 0,30 18-23 * * * myCommand # 每天18 : 00至23 : 00之間每隔30分鐘執行
0 23 * * 6 myCommand # 每星期六的晚上11 : 00 pm執行 * */1 * * * myCommand # 每一小時執行 * 23-7/1 * * * myCommand # 晚上11點到早上7點之間,每隔一小時執行

4. crontab服務

  • service crond start //啟動服務
  • service crond stop //關閉服務
  • service crond status //檢視服務狀態
  • service crond restart //重啟服務
  • service crond reload //重新載入配置
  • 一般預設是啟動的

5. 例項

假如當前為root使用者,新增一個定時任務,操作步驟如下:

1. 編輯待執行的sh指令碼:vim test123.sh

2.通過chmod賦予.sh指令碼可執行許可權:chmod +x test123.sh

3. 編輯vim /var/spool/cron/root檔案,或執行crontab -e,編輯任務列表,將第一步中的sh指令碼新增到任務列表中

本例中,將sh指令碼列印的hello world輸出到2.log日誌檔案中,每分鐘執行一次

4. 檢視結果

可以看到,實際每分鐘列印一行hello world!