crontab 作业日志消息显示来自 mta#012 的错误状态 0x004b

Be2*_*Be2 4 linux ssh bash cron ubuntu

crontab当我尝试检查我的 crontab 作业时,作业日志消息显示来自 mta#012 的错误状态 0x004b。

# grep CRON /var/log/syslog
[...]
Run Code Online (Sandbox Code Playgroud)

我得到这个日志:

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)
[...]
Run Code Online (Sandbox Code Playgroud)

crontab工作不工作。

此消息是什么意思,我该如何解决?

HoD*_*HoD 5

默认情况下,cron 会发送一封电子邮件,其中包含在 cron 中执行的命令的输出。如果您没有指定 aMAILTO=myself@example.com它发送给调度 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 | 记录器 -t coolexampletag