crontab 配置文件linux
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
例如:shell
*/5 * * * * root /usr/libexec/atrun
minute(m) : 表明一小時內的第幾分,範圍 0-59。
hour (h) : 表明一天中的第幾小時,範圍 0-23。
mday (dom) : 表明一個月中的第幾天,範圍 1-31。
month(mon) : 表明一年中第幾個月,範圍 1-12。
wday (dow) : 表明星期幾,範圍 0-7 (0及7都是星期天)。
who : 要使用什麼身份執行該指令,當您使用 crontab -e 時,沒必要加此字段。
command(command):所要執行的指令。bash
crond 開機啓動服務器
crond 啓動/關閉腳本dom
/etc/init.d/crond help Usage: /etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
crond 加入到開機啓動ui
chkconfig crond on
crontab定時任務不執行問題rest
crontab定時任務不執行問題日誌
排查緣由步驟以下:教程
首先,確認服務器是否開啓定時任務計劃服務,只有root用戶才能對crond服務進行開啓和關閉crontab
[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不執行就是這個緣由
crontab 常見錯誤的幾個問題
編輯 crontab :
crontab -e # m h dom mon dow command SHELL=/bin/bash 30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh
Ctrl + O (寫入)——》 Enter鍵(保存文件名)——》 Ctrl + X(退出)
輸入查看命令:
crontab -l # m h dom mon dow command SHELL=/bin/bash 30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(推薦用此方式)
若是遇到shell語法錯誤
Syntax error: "(" unexpected
解決方法:
需指定shell解釋器命令:SHELL=/bin/bash(請參見上面 crontab編輯示例 SHELL=/bin/bash)
或者參見: LINUX – BASH Syntax Error
若是遇到路徑錯誤
在 /var/spool/crontab/yanggang 中,添加了以下命令,在日誌文件 /var/spool/mail/yanggang 中提示找不到 xxx.sh 路徑
30 * * * * /home/barry/top800/top10/top10_fruits/top10_all.sh
或
30 * * * * bash /home/barry/top800/top10/top10_fruits/top10_all.sh
這是由於你在crontab中使用了絕對路徑執行腳本 top10_all.sh,所以在腳本 top10_all.sh 中引用的其它腳本也都須要使用絕對路徑,才能被crontab找到並執行。
那麼該如何避免絕對路徑呢,推薦採用以下格式:
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(推薦用此方式)
先進入該目錄,而後在執行腳本;不然,執行腳本中的其它腳本都須要加絕對路徑。
免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/