我不确定守护进程是否是正确的术语,但我们有许多进程(ksh 脚本),我们在 AIX 上使用“at”命令启动。希望它们一直运行,直到被告知关闭为止,此时 ksh 脚本会执行“退出”,以某种方式导致进程向进程所有者的帐户发送邮件消息。当致命错误终止进程时,我们还会收到一条邮件消息。当进程由于某些错误而终止时(对于它提供的调试信息)发送邮件是很好的,但是当发生正常关闭时,我希望不发送邮件消息。那可能吗?
答案1
如果错误时的输出打印到 stderr,并且正常退出时的所有输出都打印到 stdout,则可以在使用 启动命令时重定向输出at
。
at command > /dev/null
默认情况下,通过at
电子邮件发送 stdout 和 stderr (来自手册页):
用户将收到其命令的标准错误和标准输出(如果有)。将使用命令 /usr/sbin/sendmail 发送邮件。
问题是,当您因错误退出时,您也会丢失标准输出。对于这类事情,我有一个小的Python程序,它包装另一个命令并缓存输出(stdout和stderr),只有当命令的退出值非零(或者如果某些特殊错误字符串)时才会发送此缓存数据存在于输出中,这对于我使用的某些总是以 0 退出的 Windows 链接器来说很方便,尽管存在错误。)。