我想知道我是如何看到cron作業在每次執行時所做的。日誌文件位於何處?或者我可以將輸出發送到我的電子郵件嗎?我已經設置了電子郵件地址以在cron作業運行時發送日誌,但我還沒有收到任何內容。Cron作業日誌 - 如何登錄?
回答
* * * * * myjob.sh >> /var/log/myjob.log 2>&1
將記錄從cron作業全部輸出到/var/log/myjob.log
您可以使用mail
發送電子郵件。大多數系統將通過電子郵件發送未處理的cron
作業輸出到根或相應的用戶。
默認的cron記錄到/ var/log/syslog的,所以你可以通過使用請參閱cron相關的條目:
grep CRON /var/log/syslog
https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log
這裏是我的代碼:
* * * * * your_script_fullpath >> your_log_path 2>&1
有至少有三個不同類型的日誌記錄:
程序之前使用日誌記錄被執行時,其僅當 的cronjob試圖執行該命令日誌。那個位於 /var/log/syslog,正如@Matthew Lock所述。
程序試圖執行後發生的錯誤記錄,可以通過電子郵件或文件發送到 ,如@Spliffster所述。我喜歡記錄 到一個文件中,因爲使用電子郵件,那麼你有 問題的新來源,其是否電子郵件發送和接收工作完美 檢查。有時候是,有時候不是。例如,在一個 簡單的普通臺式機中,你有沒有興趣 配置SMTP,有時你會更喜歡記錄到文件:
* * * * COMMAND_ABSOLUTE_PATH > /ABSOLUTE_PATH_TO_LOG 2>&1
- 我也會考慮檢查/ ABSOLUTE_PATH_TO_LOG權限,並從該用戶的權限運行該命令。只是爲了驗證,而您測試它是否可能是問題的潛在來源。
- 程序本身的日誌記錄,以自身的錯誤處理和日誌記錄進行跟蹤。
cronjobs存在一些常見的問題來源: *要執行的二進制文件的ABSOLUTE PATH。當您從 shell中運行它,它可能工作,但cron進程似乎使用另一個 環境,因此它並不總能找到二進制文件,如果你不 使用絕對路徑。 *二進制文件使用的庫。它或多或少與前一點相同,但要確保如果簡單地放置命令的名稱,就是指使用相同庫的二進制文件,或者更好地檢查是否使用絕對路徑引用二進制文件與您直接使用控制檯時所提到的完全相同。二進制文件可以使用定位命令中找到,例如:
$locate python
確保二進制你參考,是非常相同你調用你的shell,或者乾脆在你的shell使用再次測試二進制你打算放在cronjob中的絕對路徑。
- 另一個常見的問題是cronjob中的語法。請記住,有一個你可以使用列表(逗號)的特殊字符,定義範圍(破折號 - ),定義的範圍(斜線)增量等請看: http://www.softpanorama.org/Utilities/cron.shtml
櫃面你用sudo運行一些命令,它不會允許它。 Sudo需要一個tty。
在Ubuntu上,您可以啓用cron.log
文件來僅包含CRON條目。
取消註釋,在/etc/rsyslog.d/50-default.conf
文件提到cron
行:
# Default rules for rsyslog.
#
# For more information see rsyslog.conf(5) and /etc/rsyslog.conf
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
保存並關閉文件,然後重新啓動rsyslog
服務:
sudo systemctl restart rsyslog
您現在可以看到在自己的cron日誌條目文件:
sudo tail -f /var/log/cron.log
示例輸出:
Jul 18 07:05:01 machine-host-name CRON[13638]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
但是,你不會看到什麼腳本實際上裏面/etc/cron.daily
或/etc/cron.hourly
運行更多的信息,除非這些腳本直接輸出到cron.log(或者是一些其他的日誌文件)。
如果您想驗證一個crontab中運行,而不必尋找它在cron.log
或syslog
,創建一個重定向輸出到您選擇的日誌文件的crontab - 喜歡的事:
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log 2>&1
步驟取自:https://www.cyberciti.biz/faq/howto-create-cron-log-file-to-log-crontab-logs-in-ubuntu-linux/
以上所有都不適用於我。所以,我必須在/etc/cron.d/的crontab文件頂部添加'MAILTO = [我的電子郵件]',並且我得到了答案,因爲我的cron命令出錯了。
cron
已將其通過郵件運行的每個作業的標準輸出和標準錯誤發送給cron作業的所有者。
您可以在crontab
文件中使用MAILTO=recipient
將電子郵件發送到其他帳戶。
爲此,您需要讓郵件正常工作。發送到本地郵箱通常不是問題(事實上,有可能ls -l "$MAIL"
會顯示你已經收到了一些郵件),但是將它從盒子中取出併發布到互聯網上需要MTA(Postfix,Sendmail,你有什麼)以正確配置連接到世界。
- 1. Magento Cron作業:日誌清理和reindexing
- 2. cron作業沒有執行,也沒有電子郵件/日誌
- 3. 如何當cron作業觸發登錄火力回調裏面
- 4. 如何通過OAuth登錄,以便可以運行cron作業
- 5. logrotate cron作業不旋轉某些日誌
- 6. 企業庫日誌記錄沒有從ASP.NET登錄到事件日誌
- 7. 日誌JBoss登錄
- 8. Cron作業沒有存儲錯誤/日誌結果
- 9. Google App Engine的Cron作業日誌文件
- 10. Cron作業stderr電子郵件和日誌文件?
- 11. CPanel Cron作業設置的工作日
- 12. aiohttp如何登錄訪問日誌?
- 13. 如何登錄到系統日誌?
- 14. 如何測試cron作業?
- 15. 如何設置Cron作業?
- 16. 如何使用cron作業
- 17. 企業庫日誌記錄
- 18. Ubuntu cron作業
- 19. 如何在App Engine中查看失敗的cron作業的日誌?
- 20. 如何使用參數運行cron作業並將結果傳遞給日誌?
- 21. random cron作業
- 22. CRON作業codeigniter
- 23. PHP CRON作業與用戶登錄的調用函數
- 24. cron作業多任務
- 25. 處理Cron作業
- 26. apache2登錄到日誌
- 27. Nginx:登錄系統日誌
- 28. 設置cron作業的日期範圍
- 29. cron作業PHP
- 30. 笨cron作業
描述是什麼意思`2>&1`:http://stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21 – Yamaneko 2012-09-26 14:26:30
如果從未創建該日誌文件,可能會出現什麼問題? – clamp 2013-12-20 10:57:28
FWIW,如果你想在日誌中使用`stderr`和`stdout`,`2>&1`必須在間接後面出現:`myjob.sh >> /var/log/myjob.log 2>&1` – 2014-04-23 17:08:01