如何让 Ubuntu 在某个服务停止时向我发送邮件?
我已经运行了 mail(),因此我可以通过 cronjob 检查它,并在某个服务停止时发送邮件。怎么做?
例如:
sudo service apache2 status
* apache2 is not running
在消息中使用 grep()?我是否必须每分钟检查一次。我想这对于服务器性能来说不是一个好主意?
有谁有什么建议吗?
答案1
if ps ax | grep -v grep | grep apache2 > /dev/null
then
exit 0
else
echo "apache2 is not running!" | mail -s "Apache2 is down"
sudo service apache2 start
fi
关于运行 bash 脚本,这取决于您检查的频率,我认为每 15 分钟检查一次就足够了,或者每小时检查一次。
如果您想每 15 分钟检查一次,那就是 crontab 命令:
*/15 * * * * /tmp/checkservice.sh >/dev/null 2>&1
这将每 15 分钟检查一次服务,如果服务未运行,它将向您发送一封电子邮件,如果您希望此任务也自动化,您还可以在其他部分添加自动启动代码。