我们的服务器上正在运行一个进程,该进程偶尔会失败。我希望每次发生这种情况时都能收到某种电子邮件通知。有没有简单的设置方法?
答案1
最简单的方法可能就是这一行(受 SpliFF 的答案启发):
failing_process || mail -s 'Process failed' [email protected]
为了对系统进行更复杂的监控(而不仅仅是单个进程),请查看纳吉奥斯,监控以及所有其他知名的监控工具。它们通常还支持除电子邮件之外的其他方式的通知。
对于单个系统,监控可能是最合适的解决方案。
答案2
有一个 cron 任务执行
ps -A | grep INSERTPROCESSNAME
看看你想要的东西是否存在
然后运行一些脚本来发送电子邮件。您可以随意编写脚本发送程序,使用 php、python - 任何带有 SMTP 包装器的东西。
或者,您可以使用http://www.postageapp.com并向其发送 curl 请求。
答案3
如果进程完全退出,您可以在 bash 中执行此操作:
myprocess &
wait
echo "process details" | mail -s "process failed" [email protected]
答案4
我认为有一个 nagios 检查进程。这意味着您必须设置 nagios,或者您可以按照传统方式进行操作,每分钟运行一次 cron 检查名称,看看进程是否仍然存在。如果没有找到该名称的进程,那么您就有了答案。
如果正在运行的进程使用 tcp/udp 端口。您可以监听该端口,当失败时,您会收到一封电子邮件。我认为您也可以在这里使用 CRON。
进程不会无缘无故地被终止,并且总会有证据表明进程失败的原因。日志文件中是否有任何内容可以说明进程被终止的原因?
-N