1、簡介
cron是一個在後臺執行排程的守護程式,而crontab是一個設定cron的工具。cron排程的是/etc/crontab檔案。
2、centos安裝crontab
yum install crontabs
3、crontab的配置檔案
Linux下的任務排程分為兩類:系統任務排程和使用者任務排程。Linux系統任務是由 cron (crond) 這個系統服務來控制的,這個系統服務是預設啟動的。使用者自己設定的計劃任務則使用crontab 命令。在CentOS系統中,
cat /etc/crontab
配置檔案可以看到如下解釋:
前三行:用來配置crond任務執行的環境變數。
第一行:SHELL變數指定了系統要使用哪個shell,這裡是bash;
第二行:PATH變數指定了系統執行命令的路徑;
第三行:MAILTO變數指定了crond的任務執行資訊傳送給root使用者,如果MAILTO變數的值為空,則表示不傳送任務執行資訊給使用者;
使用者可以使用 crontab 工具來定製自己的計劃任務。所有使用者定義的crontab 檔案都被儲存在 /var/spool/cron目錄中。其檔名與使用者名稱一致:
4、crontab命令詳解
格式:
crontab [-u user] file crontab [ -u user ] [ -i ] { -e | -l | -r }
說明:
crontab –e //修改 crontab 檔案,如果檔案不存在會自動建立。 crontab –l //顯示 crontab 檔案。 crontab -r //刪除 crontab 檔案。 crontab -ir //刪除 crontab 檔案前提醒使用者。 service crond status //檢視crontab服務狀態 service crond start //啟動服務 service crond stop //關閉服務 service crond restart //重啟服務 service crond reload //重新載入配置
取消某個定時任務:
刪除在配置檔案中的對應命令,即 crontab -e 開啟檔案,然後刪除對應哪行的命令即可
5、定時任務的基本格式(即crontab -e使用說明)
* * * * * command 分 時 日 月 周 命令
第1列表示分鐘 00~59 每分鐘用*或者 */1表示
第2列表示小時 00~23(0表示0點)
第3列表示日期 01~31
第4列表示月份 01~12
第5列標識號星期 0~6(0表示星期天)
第6列要執行的命令
此外每一列除了數字,還可以有這些符號,其含義如下所示:
* 代表任何時間,比如第一個 * 就代表一小時中的每分鐘都執行 , 代表不連續的時間,比如 0 8,12,16 * * * 代表每天8,12,16點0分執行 - 代表連續的時間範圍,比如0 5 * * 1-6 代表在週一到週六凌晨5點0分執行 */n 代表每個多久執行一次,比如*/10 * * * *代表每隔10分鐘執行一次
示例:
(1)在 凌晨00:10執行
10 0 * * * sh test.sh
(2)每個工作日23:59都進行備份作業
59 23 * * 1,2,3,4,5 sh test.sh 或者 59 23 * * 1-5 sh test.sh
(3)每分鐘執行一次命令
*/1 * * * * sh test.sh
(4)每個月的1號 14:10 執行
10 14 1 * * sh test.sh
(5)每10分鐘定時請求一個地址
0 */10 * * * /usr/bin/curl http://www.aaa.com/index.php
6、 crontab 日誌
tail -f /var/log/cron
7、Q&A--crontab定時任務指令碼不執行?
(1)全路徑。crontab定時任務(crontab -e編輯中涉及的路徑)要寫全路徑,全路徑!
(2)執行許可權。看日誌,cat /var/log/cron。如果日誌中有執行記錄可能是指令碼沒有執行許可權。
8、應用
實現每分鐘向檔案寫入一條資料的效果: