Upstart跟踪错误的Bluepill PID

时间:2013-07-11 16:14:52

标签: linux ubuntu upstart bluepill

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

使用Ubuntu 12.04。

我正在使用Ubuntu的upstart启动并监控bluepill服务。我的upstart配置低于(/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

如果我使用kill -9强行杀死bluepill,这会阻止bluepill进程重生。

此外,我认为由于跟踪了错误的PID,重启/关机只会挂起,我每次都必须硬重置机器。

这可能是什么问题?

1 个答案:

答案 0 :(得分:0)

显然,upstart会跟踪错误的PID。通过查看 bluepill 源代码,它使用守护进程 gem进行守护进程,然后再进行两次分离。因此,upstart config 中的expect daemon应该跟踪正确的PID - 但您已经尝试过了。

如果你可以,你应该在前台运行 bluepill ,而不要在你的upstart配置中使用任何expect节。

来自 bluepill 文档:

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

将在前台运行 bluepill