在實際工作中,系統的定時任務一般都是需要重複執行的,這就需要使用 crontab 命令來執行循環定時任務。而crontab 命令需要crond服務支持,crond是在Linux下用來週期性的執行某些任務的一個守護線程。和Windows中的計劃任務類似。而這種系統在某個時間執行特定的命令或程序就是任務調度。
Linux下任務調度可分爲兩類:
系統任務工作調度:系統週期性所要執行的工作。如:寫緩存數據到硬盤、清理日誌等。
用戶任務調度:用戶定期要執行的工作。如:數據庫的備份。
-
crontab [選項] 常用選項: -e : 編輯crontab定時任務 -l : 查詢crontab任務 -r : 刪除當前用戶所有的crontab任務 service crond restart -----重啓任務調度
實例: 每分鐘執行 詳細遍歷 etc 目錄下的文件 並將遍歷信息寫入另外一個文件
以上步驟詳細解釋:
1> 執行 crontab -e 命令,打開一個空文件,操作方式和 vi 類似。
2> 將任務( */1 * * * * ls -l /etc >> home/liang/Linux_Study/to.txt )輸入到調度文件 。保存調度文件並退出。
3> 至此後,每一分鐘都會自動的調用 ls -l /etc >> home/liang/Linux_Study/to.txt。
crontab -e 命令時每個用戶都可以執行的命令,不同的用戶可以執行自己的定時任務,這就是用戶任務調度 。 這個定時任務實際就會寫入 /var/spool/cron/ 目錄中,每個用戶的定時任務用自己的用戶名進行區分。
5個“*”佔位符的具體含義
項目 | 含義 | 範圍 |
---|---|---|
第一個“*” | 一小時當中的第幾分鐘 | 0~59 |
第二個“*” | 一天當中的第幾小時 | 0~23 |
第三個“*” | 一個月當中的第幾天 | 1~31 |
第四個“*” | 一年當中的第幾個月 | 1~12 |
第五個“*” | 一週當中的星期幾 | 0~7(0和7都代表星期日) |
時間特殊符號
特殊符號 | 含義 |
---|---|
*(星號) | 代表任何時間。比如第一個"*"就代表一小時種每分鐘都執行一次的意思。 |
,(逗號) | 代表不連續的時間。比如"0 8,12,16***命令"就代表在每天的 8 點 0 分、12 點 0 分、16 點 0 分都執行一次命令。 |
-(中槓) | 代表連續的時間範圍。比如"0 5 ** 1-6命令",代表在週一到週六的凌晨 5 點 0 分執行命令。 |
/(正斜線) | 代表每隔多久執行一次。比如"/10***命令",代表每隔 10 分鐘就執行一次命令。 |
crontab舉例
時間 | 含義 |
---|---|
45 22 ***命令 | 在 22 點 45 分執行命令 |
0 17 ** 1命令 | 在每週一的 17 點 0 分執行命令 |
0 5 1,15**命令 | 在每月 1 日和 15 日的凌晨 5 點 0 分執行命令 |
40 4 ** 1-5命令 | 在每週一到週五的凌晨 4 點 40 分執行命令 |
*/10 4 ***命令 | 在每天的凌晨 4 點,每隔 10 分鐘執行一次命令 |
0 0 1,15 * 1命令 | 在每月 1 日和 15 日,每週一個 0 點 0 分都會執行命令,注意:星期幾和幾日最好不要同時出現,因爲它們定義的都是天,非常容易讓管理員混淆 |
系統crotab設置
需要系統來執行的任務,需要我們去編輯 /etc/crontab 配置文件,CentOS7的配置文件如下圖: