crond 是 linux 下用來週期性的執行某種任務或等待處理某些事件的一個守護程式,與 windows 下的計劃任務類似,當安裝完成作業系統後,預設會安裝此服務工具,並且會自動啟動 crond 程式,crond 程式每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
cron 是一個常駐服務,它提供計時器的功能,讓使用者在特定的時間得以執行預設的指令或程式。只要使用者會編輯計時器的配置檔案,就可以使用計時器的功能
==============================================================
常用的命令:
列出該使用者的所有定時器:crontab -l
編輯該使用者的所有定時器:crontab -e
刪除該使用者的所有定時器:crontab -r
==============================================================
基本格式
# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
———————————————————————————-
* * * * * command
分 時 日 月 星
分: 表示分鐘,可以是從 0 到 59 之間的任何整數。
時:表示小時,可以是從 0 到 23 之間的任何整數。
日:表示日期,可以是從 1 到 31 之間的任何整數。
月:表示月份,可以是從 1 到 12 之間的任何整數。
星:表示星期幾,可以是從 0 到 7 之間的任何整數,這裡的 0 或 7 代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的指令碼檔案。
========================================================
在以上各個欄位中,還可以使用以下特殊字元:
星號(*):代表所有可能的值,例如 month 欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”
中槓(-):可以用整數之間的中槓表示一個整數範圍,例如 “2-6” 表示 “2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如 “0-23/2” 表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在 minute 欄位,表示每十分鐘執行一次。
========================================================
常用定時時間:
每 1 分鐘執行一次 command * * * * * command
每天早上六點執行一次~ 0 6 * * * command
每兩個小時執行一次~ 0 */2 * * * command
晚上 11 點到早上八點之間每兩個小時和每八小時執行一次 0 23-7/2,8 * * * command
每月 12 號的每個星期二到星期五上午 9 點執行 0 9 12 * 2-5 command
========================================================
crontab 沒有立即生效原因
第一種是指令碼執行了,但是報錯:在 crontab 裡排程執行,結果發現沒有結果,檢視/var/log/message 日誌,發現 crontab 有執行,但是失敗。
手動執行都是可以的,放在 crontab 裡邊發現就不能執行了。
處理方法:指令碼中不要採用相對路徑,全部改為絕對路徑
第二種是編輯/var/spool/cron/user user 為執行使用者名稱,一般為 root
如更改後不起效果,請重新載入 cron:
處理方法: /etc/init.d/cron reload
第三種 用 crontab -e 進行編輯
#crontab -e
如還不行就重啟服務:
處理方法:/etc/init.d/crond restart