簡體   English   中英

在Linux中啟動期間啟動Java jar文件

[英]Start Java jar file during Startup in Linux

情況:

我在服務器PC上有一個jar文件(PC充當服務器), a.jar ,它將運行無限循環來監聽來自客戶端PC的 TCPIP連接。 連接完成后, 客戶端PC可以將zip文件發送到服務器PCa.jar將解壓縮並執行帶有該zip的腳本,這將啟動另一個全屏顯示java文件b.jar

如果b.jar已經存在, a.jar還會嘗試在啟動期間運行b.jar


方法1:

我在/etc/init.d/中編寫了一個腳本來啟動a.jar ,因為它是無限循環,系統在啟動期間永遠掛起( 在終端屏幕中,甚至無法進入GUI )。 我必須啟動進入單用戶模式才能刪除該腳本才能正常啟動。


方法2:

當我更改腳本以運行a.jar作為守護進程時,它運行正常,監聽連接,我可以連接到服務器pc並發送zip文件。

問題:

  1. 即使執行權限和文件都已正確設置,也不會執行b.jar
  2. 發送zip文件后,執行b.jar因為它連接到設備並且該設備已激活 )。 但是全屏顯示沒有像通過終端執行時那樣顯示。

這樣做的原因

它可能看起來有點復雜,但是因為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM