[英]Start Java jar file during Startup in Linux
情況:
我在服務器PC上有一個jar文件(PC充當服務器), a.jar ,它將運行無限循環來監聽來自客戶端PC的 TCPIP連接。 連接完成后, 客戶端PC可以將zip文件發送到服務器PC , a.jar將解壓縮並執行帶有該zip的腳本,這將啟動另一個全屏顯示java文件b.jar 。
如果b.jar已經存在, a.jar還會嘗試在啟動期間運行b.jar 。
方法1:
我在/etc/init.d/中編寫了一個腳本來啟動a.jar ,因為它是無限循環,系統在啟動期間永遠掛起( 在終端屏幕中,甚至無法進入GUI )。 我必須啟動進入單用戶模式才能刪除該腳本才能正常啟動。
方法2:
當我更改腳本以運行a.jar作為守護進程時,它運行正常,監聽連接,我可以連接到服務器pc並發送zip文件。
問題:
這樣做的原因
它可能看起來有點復雜,但是因為b.jar會不斷更新,並且在更新后必須自動啟動,因此我使用a.jar解壓縮並執行新版本的b.jar 。
並且b.jar需要以root身份運行,因為它需要訪問串行端口。
( 服務器pc需要自動化,因此需要在啟動和遠程控制期間啟動b.jar )
題
我可以知道有更好的辦法嗎? 或者我做錯了什么? 有人能告訴我一個更好的腳本在啟動時啟動嗎?
我認為如果你想將應用程序作為守護進程運行,最好的解決方案是使用Apache Jsvc :
Jsvc是一組庫和應用程序,用於使Java應用程序更容易在UNIX上運行。 Jsvc允許應用程序(例如Tomcat)以root身份執行某些特權操作(例如綁定到端口<1024),然后將身份切換到非特權用戶。 它可以通過Cygwin仿真層在Win32上運行,但是Win32用戶可能更喜歡使用procrun,這允許應用程序作為Windows服務運行。
方法1應該工作,但您必須通過添加&
命令在后台運行java進程。
但是有更好的解決方案來運行java應用程序作為deamon。 以上可以視為快速修復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.