crontab
当我尝试检查我的 crontab 作业时,作业日志消息显示来自 mta#012 的错误状态 0x004b 。
# grep CRON /var/log/syslog
[...]
我收到这个日志:
Nov 26 08:00:01 stiitsrv9 CRON[26109]: (root) CMD (/usr/local/sbin/backup-sti-epfl-ch)
Nov 26 08:01:02 stiitsrv9 CRON[26108]: (root) MAIL (mailed 13311563 bytes of output but got status 0x004b from MTA#012)
[...]
這個crontab
工作沒有效果。
此消息是什么意思?我该如何修复它?
答案1
默认情况下,cron 会发送一封电子邮件,其中包含 cron 中执行的命令的输出。如果您未指定,[email protected]
它会发送给安排 cronjob 的用户。
Cron 将使用在 /usr/include/paths.h 中定义为 _PATH_SENDMAIL 的任何邮件服务器二进制文件。这通常是 sendmail 或 postfix。大多数发行版都安装了邮件服务器,但可能配置不正确。其他发行版没有安装默认邮件服务器(以 Ubuntu 为例)。
您的 MTA(邮件传输代理)返回的退出代码为 0x004b,十六进制为 75。这可能意味着您已安装邮件服务器但尚未配置。
至于解决方案:
- 配置您的 MTA,以便它可以发送邮件。最基本的解决方案是将邮件放在服务器上的 /var/mail 中
- 将输出重定向到文件:/example/coolscript.sh >> /var/log/cool.log 2>&1
- 如果你不关心输出而只想摆脱日志中的垃圾邮件:/example/script.sh >/dev/null 2>&1
- 如果您希望在 syslog 中输出:/example/coolscript.sh 2>&1 | logger -t coolexampletag