我写了一个bash脚本来重启Apache,当它挂起并发送邮件给管理员。代码如下所示。如果Apache进程的数量为零,代码将重新启动Apache。问题是:Apache有时会挂起,进程仍然不是零,所以在这种情况下,脚本不会重新启动Apache。 需要的是:如何修改代码以重启Apache,如果它挂起并且进程不为零。bash脚本自动重启Apache
#!/bin/bash
if [ `pgrep apache2 -c` -le "0" ]; then
/etc/init.d/apache2 stop
pkill -u www-data
/etc/init.d/apache2 start
echo "restarting....."
SUBJECT="Apache auto restart"
# Email To ?
EMAIL="[email protected]"
# Email text/message
EMAILMESSAGE="apache auto restart done"
# send an email using /bin/mail
/bin/mail -s "$SUBJECT" "$EMAIL" "$EMAILMESSAGE"
fi
修复疾病,没有症状。你应该问如何确定为什么Apache挂起(可能在ServerFault中),然后修复它......而不是如何在挂起时重新启动它。 – Juliano
为什么在这里重新发明轮子,在/etc/rc.d或类似的(取决于unix/linux安装)中找到的启动脚本有能力重启,但是再次检查错误日志,必须重新启动服务器,通常是/etc/rc.d/3/rc.httpd重启或类似... – t0mm13b
嗨。朱利亚诺你是对的。我在寻找问题的根源,但我认为这种脚本是“必须拥有”的脚本,因为将来它有可能会挂起,这个脚本将暂时解决问题。 –