介紹:任務調度是指在某個時間執行特定的程序或者命令
基本語法:crontab[選項]
快速入門:
1.每隔1分鐘,就將當前的日期信息,追加到 /tmp/mydate.log 文件中
1.1輸入:crontab -e 進去
1.2編輯:*/1 * * * * ls -l /etc >> /tmp/t.txt (意思是每一分鐘 都會執行ls - l /etc 並把結果輸入都 t.txt中)
1.3保存退出 :wq
1.4每一分鐘都會調用 ls -l /etc 把查詢到的結果 輸入到 t.txt
應用實例:
案例一:每隔一分鐘,就把當前系統時間,追加到 /tmp/mydate.log 文件中(編輯文件輸入 i ,纔可以插入;保存退出輸入 :wq)
1.先創建一個腳本 /home/mytask1.sh ,在mytask1.sh裏面輸入下面的內容 。輸入完保存退出
date >> /tmp/mydate.log
2.在操作檯執行,給這個mytask1.sh 一個可以執行的權限,因爲文件剛創建的時候,沒有執行權限,只有讀寫權限
chmod 744 mytask1.sh
3. crontab -e (解釋:在操作頁面輸入crontab -e 進行編輯)
4.在上一步打開的頁面中進行編輯 並 保存退出 (解釋:下面的指令是 每隔一分鐘,去執行 /home/mytask1.sh )
*/1 * * * * /home/mytask1.sh
5.查看/tmp/mydate.log 下這個文件內容
案例2:每天凌晨2點,將mysql 數據庫testdb,備份到文件mydb.bak中 (和案例操作步驟一樣,只是.sh文件中的內容不一樣)
1.先創建一個腳本 /home/mytask2.sh,在裏面編寫指令(每個人數據庫安裝地址用戶名都不同,自己參考)。保存退出
/user/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
2.給 /home/mytask2.sh 一個可以執行的權限
chmod 744 mytask2.sh
3.crontab -e
4.打開crontab 中,編輯
0 2 * * * /home/mytask2.sh
5.結束
其它操作:
crond 相關指令:
1) conrtab –r:終止任務調度。
2) crontab –l:列出當前有那些任務調度
3) service crond restart [重啓任務調度]
參數細節說明:
- 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分執行命令 |
*/n |
代表每隔多久執行一次。比如“*/10 * * * * 命令”,代表每隔10分鐘就執行一遍命令 |
- 特定時間執行任務案例
時間 |
含義 |
45 22 * * * 命令 |
在22點45分執行命令 |
0 17 * * 1 命令 |
每週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號,每週1的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,因爲他們定義的都是天。非常容易讓管理員混亂。 |
注意:如果是簡單的任務,可以不用寫腳本,直接使用crontab加入任務即可
對於比較複雜的任務,需要寫 腳本(shell編程)