2013-07-11 37 views
5

我有bluepill安裝程序來監視我的delayed_job進程。Upstart跟蹤Bluepill的錯誤PID

使用Ubuntu 12.04。

我開始使用Ubuntu的upstart監測bluepill服務本身。我的新貴配置如下(/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> 

藍圖進程的PID在這裏是1154。但upstart似乎跟蹤錯誤的PID。

$ initctl status bluepill 
bluepill start/running, process 990 

這是防止如果我強行殺死bluepill使用kill -9得到重生的bluepill過程。

而且,我想是因爲錯誤的PID被跟蹤,重啓/關機只是掛起,我必須努力每次重置設備。

這裏有什麼問題?

回答

0

顯然,新貴跟蹤錯誤的PID。從看bluepill源代碼,它使用守護寶石守護進程,這反過來叉兩次。所以expect daemon在新貴配置應該追蹤正確的PID - 但你已經嘗試過。

如果您有可能,您應該在前臺運行bluepill,並且在您的新貴配置中不要使用任何expect節。

bluepill文件:

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

將在前臺運行bluepill