排查/etc/crontab不執行的過程

排查定時任務,/etc/crontab不執行的過程

近期有新項目上線,有用到定任務,個人習慣是添加定時任務到/etc/crontab,但昨天注意到定時任務並未執行,便排查原因。

過程如下:

查看定時任務狀態service crond status (centos7 版本systemctl status crond.service)-->active正常

試圖重啓定時任務service crond restart(centos7 版本systemctl restart crond.service)-->成功,按理在/etc/crontab會一分鐘重新讀取無需重啓

結果:

又試圖嘗試了網上的其他辦法,均失敗,只能將定時任務移到 crontab -e下

今天發現由於定時任務移到了root用戶的crontab -e下,導致網站程序一些文件權限問題,第一想法是crontab -u www -e把crontab移到www用戶下面,無奈,也不執行。

突然看到/var/log/cron,居然忘記查看日誌了。

錯誤如下:

(CRON) ERROR chdir failed (/home/www): No such file or directory 前往home,創建www目錄並改目錄所有者爲www。

chown www:www www

去掉root,www用戶下面的定時任務,該寫到/etc/crontab。查看定時任務日誌,執行成功!

我們知道定時任務可以寫到/etc/crontab與crontab -e下面,但你知道兩者的區別嗎?

語法不同

/etc/crontab
# For details see man 4 crontabs
 
# 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
 
 
 
crontab -e
*  *  *  *  *  command
複製代碼
使用範圍
修改/etc/crontab這種方法只有root用戶能用,這種方法更加方便與直接直接給其他用戶設置計劃任務,而且還可以指定執行shell等等, crontab -e這種所有用戶都可以使用,普通用戶也只能爲自己設置計劃任務。然後自動寫入/var/spool/cron/usename
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章