linux - crontab 定時任務
阿新 • • 發佈:2020-12-22
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!