問題描述
我想驗證我的cron作業正在執行以及在什麽時間執行。我相信我的sudo crontab -e
工作有一個日誌,但在哪裏?
我搜索穀歌,並找到建議,看看/var/log
(其中我沒有看到任何與名稱’cron’),並編輯文件/etc/syslog.conf
,我也沒有。
最佳解決思路
在默認安裝上,cron作業被記錄到
/var/log/syslog
您可以通過運行在該日誌文件中看到隻是cron作業
grep CRON /var/log/syslog
如果你還沒有重新配置任何東西,這些條目將在那裏。
次佳解決思路
您可以創建一個cron.log文件來僅包含syslog中顯示的CRON條目。請注意,如果您遵循以下指示,CRON作業仍將顯示在係統日誌中。
打開文件
/etc/rsyslog.d/50-default.conf
找到以下行開頭的行:
#cron.*
取消注釋該行,保存文件並重新啟動rsyslog:
sudo service rsyslog restart
您現在應該在這裏看到一個cron日誌文件:
/var/log/cron.log
現在將Cron活動記錄到此文件(除syslog外)。
請注意,在cron.log中,您將看到cron在/etc/cron.hourly,cron.daily等運行腳本時的條目 – 例如,就像是:
Apr 12 14:17:01 cd CRON[14368]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
但是,除非這些腳本將輸出指向cron.log(或者可能指向其他某個日誌文件),否則您將不會看到關於哪些腳本實際在/etc/cron.daily或/etc/cron.hourly內運行的更多信息。
如果您想驗證crontab是否正在運行,而無需在cron.log或syslog中搜索它,請創建一個將輸出重定向到您選擇的日誌文件的crontab,如下所示:
01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1
這會將所有運行的腳本可能產生的標準輸出和錯誤重定向到指定的日誌文件。
第三種解決思路
在這種情況下,有時可以持續監視它:
tail -f /var/log/syslog | grep CRON
第四種思路
您還可以將各個cronjob的輸出引導到自己的日誌中以獲得更好的可讀性,您隻需要在某處追加日期輸出即可。
0 15 * * * /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
第五種思路
這是一個非常古老的問題,但這些答案都不令人滿意。
首先讓你的cron作業每分鍾運行一次,然後用測試日誌記錄運行cron作為non-daemon(暫時隻殺掉任何可能已經啟動的crond):
crond -nx test
並查看流經終端的程序執行日誌。