我使用monit来监控几个进程.这些过程包括乘客实例和我编写的守护进程,为乘客实例生成pidfiles.Monit将启动这些过程没有问题.它不会阻止他们.以下是守护进程的Monit配置:
check process passenger_monitor with pidfile <%= passenger_monitor_pid %>
group <%= application %>
start program = "/bin/su - rails_apps -c 'source /home/rails_apps/.rvm/scripts/rvm; /home/rails_apps/passenger_monitor.rb'"
stop program = "/bin/kill `/bin/cat <%= passenger_monitor_pid %>`"
Run Code Online (Sandbox Code Playgroud)
这是一个通过capistrano生成的erb模板.如果我通过终端以最小的环境以root身份运行stop命令,那么它可以工作,但当我请求Monit停止进程时,我收到以下错误:
[ADT Sep 17 10:38:31] error : 'passenger_monitor' failed to stop
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想到的一切.我无法找到或生成stop命令输出的任何日志.
小智 20
尝试停止使用服务时遇到同样的问题
stop program = "/bin/kill `/bin/cat /var/run/pusher.pid`"
Run Code Online (Sandbox Code Playgroud)
您可以打开-Iv标志以查看调试输出:
monit -Iv
Run Code Online (Sandbox Code Playgroud)
或者您可以在monit在后台运行时手动验证:
monit validate
Run Code Online (Sandbox Code Playgroud)
他们都表明
'api-pusher-service' stop: /bin/kill
kill: can't find process "`/bin/cat"
kill: can't find process "/var/run/pusher.pid`"
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题
stop program = "/bin/bash -c '/bin/kill `/bin/cat /var/run/pusher.pid`'"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7477 次 |
| 最近记录: |