crontab使用說明【一文搞懂Linux定時任務Crontab】

暮良文王發表於2023-03-29

1、簡介

cron是一個在後臺執行排程的守護程式,而crontab是一個設定cron的工具。cron排程的是/etc/crontab檔案。

crontab用法與例項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、應用

實現每分鐘向檔案寫入一條資料的效果:

 

相關文章