找不到httpd.pid用于Monit apache2监控

我是Linux新手,我在Digital Ocean上安装了Ubuntu 12.04。

我安装了Monit,并通过电子邮件警报成功监控了MySQL。

我也想监视Apache2,但是找不到需要放入monitrc文件的任何httpd.pid文件。

我可以启动Apache2: /etc/init.d/apache2 start

我可以用: /etc/init.d/apache2 stop来停止Apache2

我可以重新启动Spache2: /etc/init.d/apache2 restart

在没有httpd.pid文件的情况下,还有什么其他方法可以监视Monit中的Apache2?

如果你查看init脚本,它使用的值是$ APACHE_PID_FILE,它从定义为$ APACHE_ENVVARS的文件中读取,我认为它默认为/ etc / apache2 / envvars

 PIDFILE=$(. $APACHE_ENVVARS && echo $APACHE_PID_FILE) 

在envvars文件中,PIDFILE被定义为

APACHE_PID_FILE =在/ var /运行/ Apache2的$ SUFFIX.pid

除非你正在运行apache2的多个实例$ SUFFIX将可能是“”所以$ APACHE_PID_FILE的值将是

 /var/run/apache2.pid 

但你应该可以运行

 echo $(. /etc/apache2/envvars && echo $APACHE_PID_FILE) 

并得到你的系统认为价值是什么。

我会尝试两件事情:

  1. 看看你是否可以configurationApache来写出一个PID文件。 参考: http : //httpd.apache.org/docs/2.2/mod/mpm_common.html#pidfile
  2. 修改apache2启动/停止脚本,在启动/停止过程中使用pgrep命令创build一个PID文件。 参考: http : //mmonit.com/wiki/Monit/ConfigurationExamples

在Centos上,使用“服务”工具来pipe理恶魔是一个很好的机会。 服务在目录中configuration: /etc/init.d/

在文件/etc/init.d/httpd ,你会发现pid文件的位置。 我看到like pidfile=${PIDFILE-/var/run/httpd/${prog}.pid}

所以,事实certificate,我的pidfile位于/var/run/httpd/httpd.pid