儘管我發現這個問題在SW上得到了幾次回答,但我沒有找到最終答案,最好的方法是什麼。在Linux上對Java應用程序進行守護進程的最佳方式
我不打算使用任何外部包裝,因爲我發現他們啓動java進程下一個很好的水平低於自己,這可能會降低性能,所以它似乎只剩下了shell方法。
我迄今發現3種不同的外殼方法:
- 啓動 - 停止 - 守護
- RedHat的守護進程的init.d功能
- 在啓動的nohup /認啓動後
什麼你正在使用的人,可以推薦爲最可靠的方法嗎?
謝謝。
儘管我發現這個問題在SW上得到了幾次回答,但我沒有找到最終答案,最好的方法是什麼。在Linux上對Java應用程序進行守護進程的最佳方式
我不打算使用任何外部包裝,因爲我發現他們啓動java進程下一個很好的水平低於自己,這可能會降低性能,所以它似乎只剩下了shell方法。
我迄今發現3種不同的外殼方法:
什麼你正在使用的人,可以推薦爲最可靠的方法嗎?
謝謝。
儘管對此的標準答案似乎是jsvc,但我一直在使用djb的daemon tools是將任何東西變爲守護進程的好方法。
我有java,python和幾個shell腳本作爲守護進程運行,用一個簡單的方法來啓動/停止它們,並且有很好的日誌記錄。
我以前用root運行daemontools作爲最初設計的initctl,但幾個月後我決定手動運行它,使用普通用戶,並使用svscan-start進行更好的日誌記錄。
你可以嘗試使用screen
(啓動屏幕,然後啓動Java程序,然後關閉[不退出]屏幕)
不完全是一個可怕的建議,我爲某些事情做這件事。但是我認爲這與將守護進程運行的意圖相去甚遠。不過,謝謝你的建議。 – 2013-01-16 23:23:59
我也不能完全排除外部包裝。
我已經注意到一些使用Tanuki Wrapper http://wrapper.tanukisoftware.org/的備受推崇的軟件。
這增加了一個優點,即該程序也可以作爲一個Windows服務以一致的方式輕鬆運行。
如果我想在後臺運行的守護進程的應用程序,我不喜歡這樣寫道:
nohup java -jar MyJar &
沒有什麼特別不可靠而已 - nohup
防止它接收SIGHUP
當您斷開連接,並且&
在後臺運行進程。
或者,您可以將輸出重定向到nohup.out
以外的其他東西。
我會使用RedHat守護進程init.d函數。這使您可以在服務器啓動時重新啓動應用程序。運行nohup不會處理服務器重新啓動等。
我在過去使用Akuma,並取得了巨大成功。事實上,它是一個Java庫真的讓事情變得更容易,嵌入功能是微不足道的。
看看http://yajsw.sourceforge.net/。 TanukiSoftware Java Service Wrapper免費且兼容重新實現,提供免費的64位支持。
「你正在使用的是什麼」投票問題與SO – Raedwald 2013-10-21 16:45:07
的主題無關「人們正在使用的是什麼」是一個話題,你很討厭你決定關閉一些事情,因爲它們是「基於觀點的」。諷刺不是? – Nazar 2016-09-08 15:16:21