我有使用daemon
命令(RHEL 6.2)一個Java過程進程化。我使用下面的行啓動進程和線下阻止它:如何使守護進程停止 - 直到底層進程死亡?
工作的事情,直到我將嘗試使用停止重新開始我的進程/啓動方式:
daemon --stop --name=my-service --verbose
daemon --command "/opt/my-service" --respawn --name=my-service --verbose
它該過程在執行上述命令之前運行,然後現有過程將停止,但不會創建新過程。相反,下面的線將被記錄到/var/log/messages
:
Oct 27 07:59:46 myhostname my-service: my-service: fatal: failed to become a daemon: Resource temporarily unavailable
其中,據我瞭解意味着我們試圖對pid文件獲取鎖,但另一個進程佔用其上的鎖。或者換句話說:原始流程仍在運行。
有趣的是它無法通過即下面的命令被複制:
daemon --command "sleep 30s" --respawn --name=sleeper --verbose
daemon --stop --name=sleeper --verbose
daemon --command "sleep 30s" --respawn --name=sleeper --verbose
那麼就必須有東西在我的過程中引起/戰功--stop
異步特性。
我怎樣才能讓--stop
攔截?
有你嘗試:'守護進程 - 名稱=我的服務 - 運行「? –
我還沒試過。你的意思是說我可以編寫一個循環,直到進程終止(有一些超時),然後啓動進程? – Lucas
嗯,我不能重現你的Java應用程序的行爲,但是,嘗試一些像...我將它發佈爲解決方案... –