我是 Linux 新手,我在 Digital Ocean 上安装了 Ubuntu 12.04。
我安装了 Monit 并让它成功监控 MySQL 并发出电子邮件警报。
我也想监控 Apache2,但找不到httpd.pid
需要放入 monitrc 文件的任何文件。
我可以使用以下命令启动 Apache2:/etc/init.d/apache2 start
我可以使用以下命令停止 Apache2:/etc/init.d/apache2 stop
我可以使用以下命令重新启动 Spache2:/etc/init.d/apache2 restart
在没有 httpd.pid 文件的情况下,还有什么其他方法可以在 Monit 中监控 Apache2?
答案1
如果你查看 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)
并获取系统认为的值。
答案2
在 Centos 上,您很有可能使用“服务”实用程序来管理守护进程。服务在目录中配置:/etc/init.d/
在文件中/etc/init.d/httpd
,您将找到 pid 文件位置。我看到了一些like pidfile=${PIDFILE-/var/run/httpd/${prog}.pid}
因此,我的 pidfile 位于/var/run/httpd/httpd.pid
答案3
我会尝试两件事:
- 看看你是否可以配置 Apache 来写出 PID 文件。参考: http://httpd.apache.org/docs/2.2/mod/mpm_common.html#pidfile
- 修改 apache2 启动/停止脚本,使用命令在启动/停止期间创建 PID 文件
pgrep
。参考: http://mmonit.com/wiki/Monit/ConfigurationExamples
答案4
如果你安装 Apache 2.4 或通过 chef cookbook(https://github.com/sous-chefs/apache2)那么位置将是 /var/run/apache2/apache2.pid