我正在使用 monit 来监控几个进程。这些过程包括乘客实例和我编写的为乘客实例生成 pidfile 的守护程序。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 %>`"
它是一个通过 capistrano 生成的 erb 模板。如果我通过具有最小环境的 root 身份通过终端运行停止命令,那么它可以工作,但是当我请求 Monit 停止进程时,我收到以下错误:
[ADT Sep 17 10:38:31] error : 'passenger_monitor' failed to stop
我已经尝试了我能想到的一切。我找不到或生成停止命令输出的任何日志。