我的 crontab 日誌文件在哪裡?
沒有 /var/log/cron ,我的 debian7 上沒有 /var/log/cron.log ,我的 crontab 日誌文件在哪裡?
ls /var/log/cron* ls: cannot access /var/log/cron*: No such file or directory
我認為在
debian
cron
寫入日誌時/var/log/syslog
。如果您的系統依賴於
rsyslog
或者syslogd
您可以在行/etc/rsyslog.conf
或/etc/syslog.conf
行中檢查和取消註釋:# cron.* /var/log/cron.log
然後重啟服務。
例如,如果您的系統依賴於
systemd
您可以使用以下命令進行檢查:journalctl _COMM=cron
或者
journalctl _COMM=cron --since="date" --until="date"
對於日期格式,您可以檢查journalctl。
預設情況下,
crontab
作業的輸出將發送到擁有使用者的本地電子郵件地址。例如:主機 www.aDomain.com 上的****aUsercrontab
的輸出將被發送到aUser@www.aDomain.com。系統使用其預設郵件程序來完成任務。
MAILTO
您可以通過在 crontab 文件中添加語句將此輸出轉移到備用電子郵件地址。例如:# Mail any output to myuser@gmail.com, no matter whose crontab this is MAILTO=myuser@gmail.com # Run the following command ten minutes after midnight, every day 10 0 * * * $HOME/bin/aJob.sh
使用外部電子郵件地址接收 crontab 日誌時要小心。經常發送的郵件可能會被垃圾郵件過濾器擷取。然後,對於 Yahoo、HotMail 或 Gmail 等服務,您必須將郵件標記為非垃圾郵件。
另一種解決方案是將 crontab 命令的輸出重定向到您選擇的文件。在下面的範例中
stdout
,stderr
輸出被發送到/tmp/aJob.log
. 此方法消除了發送電子郵件的可能性。# Run the following command ten minutes after midnight, every day 10 0 * * * $HOME/bin/aJob.sh >> /tmp/aJob.log 2>&1
另一種選擇是將
stderr
日誌發送到電子郵件並將stdout
日誌發送到文件。在這種情況下,當您的crontab
命令生成意外錯誤消息時,您會收到電子郵件提醒。與前一個範例的不同之處在於它2>&1
被刪除以允許stderr
輸出到控制台並因此發送到電子郵件。# Mail any output to myuser@gmail.com, no matter whose crontab this is MAILTO=myuser@gmail.com # Run the following command ten minutes after midnight, every day 10 0 * * * $HOME/bin/aJob.sh >> /tmp/aJob.log
閱讀更多crontab 表和crontab 命令