crontab詳解
目錄
簡單介紹
crontab
是一個可以根據時間、日期、月份、星期的組合排程對重複任務的執行的守護程序。
要使用cron
服務,你必須安裝了vixie-cron RPM
軟體包,而且必須在執行crond
服務。判斷該軟體包是否安裝,使用rpm -q vixie-cron
來確定。判斷服務是否在執行,使用service crond status
來確定。
配置檔案介紹
Linux下的任務排程分為兩種:系統任務排程和使用者任務排程。
系統任務排程
系統週期性要執行的工作,比如寫快取資料到硬碟、日誌清理。/etc/crontab
是系統任務排程的配置檔案。包含下列幾行:
前四行是用來配置crond任務執行的環境變數。第一行SHELL
變數指定了crond
使用shell
環境。這裡使用的是bash
;第二行是PATH
指定了系統指定了系統執行命令的PATH
;第三行MAILTO
指定了crond
的任務執行資訊通過郵件傳送到的使用者,這裡是傳送給root;第四行的HOME
指定的是執行命令或者指令碼的主目錄。
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO="root" HOME=/ # run-parts 51 * * * * root run-parts /etc/cron.hourly 24 7 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
使用者任務排程
使用者定期執行的任務,比如使用者的資料備份,指令碼執行等等。使用者可以使用crontab
定製自己的計劃任務,使用者定義的計劃任務會被儲存在/var/spool/cron
目錄下。檔案會以使用者名稱進行命名,還可以對使用者的使用許可權進行定義。
/etc/cron.deny#檔案中列出的使用者不能使用crontab /etc/cron.allow#檔案中列出的使用者可以使用crontab /var/spool/cron#使用者crontab計劃任務檔案存放目錄
crontab檔案介紹
crontab
檔案中,每一行代表一個任務;每行有六列,每列代表一項設定,前五列為時間頻率設定,第六列是要執行的任務。示例:
minute hour day mouth week command#分 時 日 月 周 命令
minute
表示分鐘,可以是0~59的任意整數。
hour
表示小時,可以是2~23的任意整數
day
表示日期,可以是1~31的任意整數
month
表示月份,可以是1~12的任意整數
week
表示星期幾,可以是0~7之間的整數,0或者7表示星期天
command
表示執行的命令
上面的設定除了數字之外還可以使用特殊字元:
星號*
:表示所有可能的值,可以理解為每
。
逗號,
:用逗號隔開的值表示一個列表範圍,如1,2,3 * * * *每天每小時的第一、第二、第三分鐘。
中槓-
:用中槓隔開的值表示一個數值範圍,如1-10 * * * *每天每小時的1到10分鐘。
正斜線/
:指定執行任務的間隔頻率,如 0 10-18/2 * * *每天的十點到十八點間隔2小時執行。
crontab例項
# 每分鐘執行一次 * * * * * # 每小時的第3和第15分鐘執行 3,15 * * * * #在上午的8點到11點的第3和第15分鐘執行 3,15 8-11 * * * #在每隔2天的上午8點和11點的第3和第15分鐘執行 3,15 8-11 */2 * * #每個星期一的上午8點到11點的第3和第15分鐘執行 3,15 8-11 * * 1 #每晚的21:30執行 30 21 * * * #每月1、10、22日的4:30執行 30 4 1,10,22 * * #每週六、日1:10執行 10 1 * * 6,7 #每天18:00到23:00之間每隔30分鐘執行 0/30 18-23 * * * #星期六的23:00執行 0 23 * * 6 #每小時執行一次 * */1 * * * #晚上11點到早上7點之間,每小時執行一次 * 23-7/1 * * * #每月的4號與每週一到週三的11點 0 11 4 * 1-3 #一月一號的4點 * 4 1 1 *