我如何找出 cron 沒有執行我的作業的原因?

我如何找出 cron 沒有執行我的作業的原因?

我使用的是 Ubuntu 14.04,而 cron 守護程式正在執行:

# ps ax | grep cron
822 ?        Ss     0:00 cron

但它沒有執行任何作業。我之前收到過/var/log/syslog這樣的條目:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

但現在沒有與 cron 相關的條目。我也收到這樣的條目/var/log/auth.log

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

但同樣,現在沒有與 cron 相關的條目。

我不知道有什麼改變。我嘗試過重新啟動 cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

我嘗試使用crontab -e新增一個* * * * * date >> /tmp/somefile有效的 cron 作業,但它在 中安裝了一個新的 crontab /var/spool/cron/crontabs/root,而我希望 cron 使用 中的檔案/etc/crontab

是否有任何我可以使用的偵錯選項,或者某個地方的日誌可能會給出我可以調查的錯誤訊息?

答案1

為了進一步幫助您調試工作中的問題cron,您應該檢查您的郵件。這通常儲存在類似/var/mail/<user_name>或 的文件中/var/spool/mail/<user_name>

這兩個文件實際上是我的 Debian 機器上的硬鏈接,但我不知道這是否是標準的。

解釋

cron(8)頁面:

執行命令時,任何輸出都會郵寄給 crontab 的所有者(或發送給 crontab 中 MAILTO 環境變數中指定的用戶,如果存在的話)。

答案2

您已經表明 root 沒有 crontab,是否有任何使用者有 crontab 條目?如果您只使用root,那麼您也可以檢查以下目錄: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

在我的機器(centos 6.4)上,我的 /etc/cron.daily/ 目錄中有 mlocate.cron ,並且 cron 每天運行該腳本。

所以我認為你只需要新增 cron 作業。

答案3

我透過將權限更改/etc/crontab為以下內容解決了這個問題:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

以前是-rw-rw-r--。這是唯一的改變。以前沒用,現在可以了。仍然不知道為什麼。

答案4

我也遇到了類似的問題,但在將 root 指定為 上的使用者後/etc/crontab,cron 作業開始觸發。

這可能是由於 所crontab -e遵循的語法與/etc/crontab.

相關內容