在 Fedora 15 上运行 Monit 5.2.5
所有标准警报都有效,但就是无法获取执行运行任何东西。
我根据 Monit Wiki 中的示例尝试了十多种不同的配置。没有任何一个执行命令做任何事情。下面只是一个简单的例子,试图让“某事”发挥作用:
check process tomcat6 with pidfile /var/run/tomcat6.pid
start program = "/etc/init.d/tomcat6 start"
stop program = "/etc/init.d/tomcat6 stop"
if failed host localhost port 8080 then
exec "/bin/bash -c '/bin/touch /tmp/monittest'"
如果我关闭 Tomcat,则会发送警报并重新启动服务。然而无论我尝试什么执行总是被忽略。
据我了解,Monit 在环境方面有很大的限制,仅限于 /bin 和 /sbin/ 等目录。因此,我尝试过的所有示例都仅限于这些目录。但还是什么都没有。
有人有什么想法吗?
ps 我已经打开了详细日志记录,日志文件中没有任何线索。
答案1
不确定连接测试是否在服务重启期间完成,也许首先尝试这样的事情:
check process tomcat6 with pidfile /var/run/tomcat6.pid
if changed pid then exec "/bin/bash -c '/bin/touch /tmp/monittest'"
答案2
你的测试适用于我在 Debian 6.0.4 上使用从源代码编译的 Monit 5.3.2 。
请尝试将端口更改为无效值,例如 8888 或 65432,然后查看文件是否创建。