2013-10-15 124 views
1

我正在調用Chef中的服務來啓動weblogic nodemanager。我們有一個腳本init.d中(service nodemanager start),使下面的調用節點管理器:廚師客戶端退出時服務停止/退出

su weblogic -c /opt/ora/mw/wlserver_10.3/server/bin/startNodeManager.sh & 

我們正在運行一個簡單的測試配方如下:

service "nodemanager" do 
    action :start 
end 

我們可以看到,確實節點管理器腳本正在被調用/啓動,但只要主廚客戶端運行完成,它就會終止節點管理器腳本。我們已經嘗試看似守護進程nohup的所有組合,但無濟於事。當主廚客戶退出時劇本被殺的任何想法?

回答

4

使用「&」表示它將當前命令作爲子進程在後臺運行,但仍附加到當前進程。這意味着一旦父進程由廚師 - 客戶端退出,所有子進程都將獲得SIGNUP。所以節點管理器腳本不會被終止。您可以使用ps aux檢查列PIDPPID來驗證此情況。

理想的修復方法是使用daemon在您的init.d腳本中不使用tty的情況下在專用用戶/組下運行節點管理器。

速戰速決使用nohup

su nohup weblogic -c /opt/ora/mw/wlserver_10.3/server/bin/startNodeManager.sh &>/dev/null & 
+0

爲我工作,剛換的nohup的是在前面。 '/ dev/null'似乎是關鍵。我以前曾嘗試守護進程和nohup –