新贵追踪Bluepill的错误PID

我有bluepill设置来监视我的delayed_job进程。

使用Ubuntu 12.04。

我开始使用Ubuntu的upstart来监控bluepill服务本身。 我的upstartconfiguration如下( /etc/init/bluepill.conf )。

 description "Start up the bluepill service" start on runlevel [2] stop on runlevel [016] expect fork exec sudo /home/deploy/.rvm/wrappers/<app_name>/bluepill load /home/deploy/websites/<app_name>/current/config/server/staging/delayed_job.bluepill # Restart the process if it dies with a signal # or exit code not given by the 'normal exit' stanza. respawn 

我也试过expect daemon而不是expect fork 。 我也尝试完全删除expect...行。

机器启动时,bluepill启动正常。

 $ ps aux | grep blue root 1154 0.6 0.8 206416 17372 ? Sl 21:19 0:00 bluepilld: <app_name> 

bluepill进程的PID在这里是1154。 但是, upstart似乎正在跟踪错误的PID。

 $ initctl status bluepill bluepill start/running, process 990 

这是防止bluepill进程得到respawned如果我用kill -9强制杀死bluepill。

此外,我认为由于错误的PID被跟踪,重新启动/关机只是挂起,我不得不每次硬复位机器。

这里可能是什么问题?

显然,新贵跟踪错误的PID。 从bluepill源代码看,它使用守护进程 gem进行守护进程 ,然后分叉两次。 所以在新贵的配置中, expect daemon 应该跟踪正确的PID – 但是你已经尝试过了。

如果有可能,你应该在前台运行bluepill ,而不是在你的新贵配置中使用任何expect节。

bluepill文档:

 Bluepill.application("app_name", :foreground => true) do |app| # ... end 

将在前景中运行蓝图