Cron

我的 crontab 日誌文件在哪裡?

  • February 17, 2021

沒有 /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 命令的輸出重定向到您選擇的文件。在下面的範例中stdoutstderr輸出被發送到/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 命令

引用自:https://unix.stackexchange.com/questions/212355