文章來自互聯網博客網站,原文連結:http://blog.sina.com.cn/s/blog_6d1b3b900102x6tm.html
crond 安裝
安裝 crontab:
yum install crontabs
cat /etc/crontab 配置檔案
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .—————- 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
# | | | | |
# m h dom mon dow command
# * * * * * command will 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 檔案
/etc/cron.deny
説明:該檔案中所列使用者不允許使用 crontab 命令
/etc/cron.allow
説明:該檔案中所列使用者允許使用 crontab 命令
/var/spool/cron/
説明:所有使用者 crontab 檔案存放的目錄, 以使用者名稱命名
tail -n 100 /var/log/cron
説明:日誌檔案
crond 開機啓動,關閉,重啓
crond 啓動/關閉指令碼
/etc/init.d/crond help
Usage: /etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
crond 加入到開機啓動
chkconfig crond on
加入開機自動啓動:
chkconfig –level 35 crond on
檢視 crontab 服務是否已設定為開機啓動:
ntsysv
用來設定某個使用者的 crontab 服務:crontab -u
在刪除使用者的 crontab 檔案時給確認提示:crontab -i
列出該使用者的所有定時器:crontab -l
編輯該使用者的所有定時器:crontab -e
刪除該使用者的所有定時器:crontab -r
service crond status //檢視 crontab 服務狀態
service crond start //啓動服務
service crond stop //關閉服務
service crond restart //重啓服務
service crond reload //重新載入配置 !!慎用
crontab 編輯
crontab -e
Ctrl + O(寫入)——》Enter 鍵(儲存檔名)——》Ctrl + X(退出)
輸入檢視命令:
crontab -l
也可以吧指令碼放在對應的目錄
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.monthly/
/etc/cron.weekly/
crontab 常見錯誤
1.crontab 定時任務不執行問題
排查原因步驟如下: 首先,確認站羣服務器是否開啓定時任務計劃服務,只有 root 使用者才能對 crond 服務進行開啓和關閉
[root@mimvp-bj script]# service crond status
crond is stopped
[root@mimvp-bj script]# service crond start
Starting crond: [ OK ]
[root@mimvp-bj script]# service crond status
crond (pid 24577) is running…
請確保 crond 狀態為 is running… 如果 crond 狀態為 crond is stopped ,則定時任務服務不會生效故無法執行,我遇到的 crontab 不執行就是這個原因.
2. 如果遇到 shell 語法錯誤
Syntax error: “(” unexpected
3. 如果遇到路徑錯誤
在 /var/spool/crontab/username 中,新增瞭如下命令,在日誌檔案 /var/spool/mail/username 中提示找不到 xxx.sh 路徑
這是因為你在 crontab 中使用了絕對路徑執行指令碼 ,因此在指令碼中引用的其它指令碼也都需要使用絕對路徑,才能被 crontab 找到並執行。
4. 其他注意事項
新建立的 cron job,不會馬上執行,至少要過 2 分鐘才執行。如果重啓 cron 則馬上執行。
當 crontab 突然失效時,可以嘗試 service crond restart 解決問題。或者檢視日誌看某個 job 有沒有執行/報錯 tail -f /var/log/cron 。
千萬別亂執行 crontab -r 。它從 Crontab 目錄(/var/spool/cron)中刪除使用者的 crontab 檔案。刪除了該使用者的所有 crontab 都沒了。
在 crontab 中% 是有特殊含義的,表示換行的意思。如果要用的話必須進行轉義%,如經常用的 date ‘+%Y%m%d’ 在 crontab 裏是不會執行的,應該換成 date ‘+%Y%m%d’ 。