【问题标题】:Monit will not stop script with kill commandMonit 不会使用 kill 命令停止脚本
【发布时间】:2012-09-17 14:27:21
【问题描述】:

我正在使用 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

我已经尝试了我能想到的一切。我找不到或生成停止命令输出的任何日志。

【问题讨论】:

    标签: passenger monit


    【解决方案1】:

    我在尝试使用停止服务时遇到同样的问题

    stop program = "/bin/kill `/bin/cat /var/run/pusher.pid`"
    

    您可以打开-Iv 标志以查看调试输出:

    monit -Iv
    

    或者您可以在后台运行monit时手动验证:

    monit validate
    

    他们都显示

    'api-pusher-service' stop: /bin/kill
    kill: can't find process "`/bin/cat"
    kill: can't find process "/var/run/pusher.pid`"
    

    这解决了我的问题

    stop program = "/bin/bash -c '/bin/kill `/bin/cat /var/run/pusher.pid`'"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多