我想對cron作業進行故障排除,直到最近的修改為止,該工作都可以正常進行,但是我找不到cron日誌文件,它在哪裡?
我想對cron作業進行故障排除,直到最近的修改為止,該工作都可以正常進行,但是我找不到cron日誌文件,它在哪裡?
默認情況下,cron不記錄已執行作業的輸出。可能會記錄已執行cronjobs的事實,但這也不是OS X上的默認設置。
為了調查cronjob執行輸出,我建議修改cronjob行以重定向STDOUT和STDERR到日誌文件。在您的crontab文件中,或者在運行 crontab -e
之後,執行以下操作,將以下內容添加到作業行:
0 0 * * * yourcommand > / tmp / stdout.log 2> / tmp / stderr.log
這樣做應將STDOUT(通常打印或回顯輸出到STDOUT)發送到名為stdout.log的文本文件/ tmp目錄,將STDERR移到temp目錄中的stderr.log。許多實用程序使用STDERR來打印特殊錯誤消息,這些錯誤消息是應用程序錯誤,而不是程序實際執行生成的錯誤。 (您可以在Wikipedia上了解有關 STDERR的更多信息。)
將以下內容簡單地添加到 /etc/syslog.conf
容易得多:
cron。* /var/log/cron.log
然後重新啟動syslog
sudo launchctl卸載/System/Library/LaunchDaemons/com.apple.syslogd.plist sudo launchctl load /System/Library/LaunchDaemons/com.apple .syslogd.plist
經過測試並可以在OSX 10.7.4上運行
默認情況下,未啟用“日誌記錄”。但是,通過運行 mail
命令,您可能會獲得一些有用的信息。
TL; DR在 mail
命令上:按Enter鍵以閱讀消息,然後 q
並輸入以退出。
我能夠找到cron-job登錄,
/ var / mail / {用戶名}
以下是我因運行AWS CLI命令而獲得的cron作業日誌,
來自build@BuildServer1.local 2018年3月2日星期五10:00:00
返迴路徑:<build@BuildServer1.local>
X-Original-To:構建
交付至:build@BuildServer1.local
接收:通過BuildServer1.local(後綴,來自用戶ID 501)
編號A7A94296CBA3; 2018年3月2日,星期五10:00:00 +0100(歐洲中部時間)
來自:build@BuildServer1.local(Cron守護程序)
到:build@BuildServer1.local
主題:Cron <build @ BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env:<SHELL = / bin / sh>
X-Cron-Env:<PATH = / usr / bin:/ bin>
X-Cron-Env:<LOGNAME = build>
X-Cron-Env:<USER = build>
X-Cron-Env:<HOME = / Users / build>
消息ID:<20180302090000.A7A94296CBA3@BuildServer1.local>
日期:2018年3月2日星期五10:00:00 +0100(歐洲中部時間)
上傳:../../ app / logs / debug.log到s3://**my-s3***/app/logs/debug.log
當cron運行作業時(與我一樣), / usr / local / bin
不在 PATH
中。
我通過試用發現了這一點。錯誤和錯誤,並從一個我知道會起作用的簡單事物開始從頭開始構建工作,並逐漸添加事物,直到發現問題為止。
關於其他建議和答案:
出於某種原因(至少在我的計算機上,該計算機運行的是從SnowLeopard升級的Lion) cron
不使用指定的參數在 launchd
用來讀取 /System/Library/LaunchDaemons/com.vix.cron.plist
的plist文件中,或者Lion上的cron不會將任何內容寫入stdout或stderr。
通過這種方式,我使用 http://s3tools.org/s3cmd sync
一個以Amazon S3存儲桶作為備份的文件夾(例如原始DropBox)。