我们有两台服务器,其中一台运行 Ubuntu,另一台运行 Amazon Linux 2。两台服务器都为不同的客户端运行一系列 cron 作业。
\n\nUbuntu 服务器会发送一封电子邮件(到一个组电子邮件地址),其中包含每个 cron 作业的输出。没有输出重定向:只需为每个条目执行一个命令:
\n\n0 2 * * * /apps/ourapp/sync_data -c variable1 -s all -i CLIENT1\n
Run Code Online (Sandbox Code Playgroud)\n\n...以不同的时间和不同的值重复-i
。\xc2\xa0\n计划的开始时间始终采用\n hh :00、hh :15或\xc2\xa0 hh :45的形式。
它的效果令人满意:人们收到了电子邮件。
\n\nAmazon Linux 机器的情况并非如此。它的邮件日志有这样的条目(稍作编辑):
\n\nFeb 28 07:05:04 ip-XXXX sSMTP[32212]: Connection lost in middle of processing\nFeb 28 08:05:04 ip-XXXX sSMTP[32382]: killed: timeout on stdin while reading body -- message saved to dead.letter.\nFeb 28 08:05:04 ip-XXXX sSMTP[32382]: Timeout on stdin while reading body\nFeb 28 21:50:04 ip-XXXX sSMTP[2261]: killed: timeout on stdin while reading body -- message saved to dead.letter.\nFeb 28 21:50:04 ip-XXXX sSMTP[2261]: Timeout on stdin while reading body\nFeb 28 22:05:04 ip-XXXX sSMTP[2505]: killed: timeout on stdin while reading body -- message saved to dead.letter.\nFeb 28 22:05:04 ip-XXXX sSMTP[2505]: Timeout on stdin while reading body\nFeb 28 22:20:05 ip-XXXX sSMTP[2845]: killed: timeout on stdin while reading body -- message saved to dead.letter.\nFeb 28 22:20:05 ip-XXXX sSMTP[2845]: Timeout on stdin while reading body\n
Run Code Online (Sandbox Code Playgroud)\n\n您会注意到时间戳分钟部分是经过 5 分钟、15 分钟或 45 分钟标记。这些对应于不发送电子邮件的 cron 作业。
\n\ndead.letter
始终为空,如果在作业结束之前没有发送日志(正如我推断的那样),这是有意义的。
我读到的内容sSMTP
表明您无法使用stdin
配置选项覆盖超时(尽管该信息可能已过时)。
那我能做什么呢?这是因为我们使用的是sSMTP
而不是其他邮件机制吗?