在 Linux 上在背景運行 Jar

在 Linux 上在背景運行 Jar

我有一個永遠運行的罐子(帶有套接字偵聽線程的無限循環)並且需要它始終在後台運行。例如:“java -jar test.jar” 我該如何執行此操作?先致謝!

答案1

幾種方式:

  1. 追加&在後面。但是,使用此功能,如果您關閉啟動程序的終端,程式仍將終止。

  2. 啟動一個screen會話,並啟動其中的程式;您可以分離screen會話並關閉終端機。稍後,您可以再次附加到會話,並發現自己回到了控制台,就像您一直在那裡一樣。但是,您需要在運行程式之前啟動螢幕會話,如果您忘記這樣做,則無法執行任何操作。

  3. disown從 shell使用作業控制。這會將任務與您的 tty 分離,並且當 tty 關閉時您的程式不會終止。但是,我不認為有任何方法可以重新連接已被拒絕的工作。

答案2

我一直在長時間運行時使用的命令行提示符是“nohup”,所以在你的情況下是

nohup java -jar test.jar &

& 很重要,這樣您就可以執行另一個 shell。我相信這不會透過重新啟動而持續下去。

答案3

如果「始終」是指它在電腦啟動時啟動,則需要將其作為啟動時腳本的一部分啟動。執行此操作的骯髒方法是添加

java -jar test.jar >/dev/null 2>&1 &

/etc/rc.local(或替換/dev/null為您最喜歡的日誌檔案)。

更好的方法是製作一個init.d在適當的運行等級啟動的腳本(例如,您可能不希望它在運行等級 0、1 或 6 上啟動)。這樣,您還可以讓它在死機時自動重新啟動,並有一個更好的介面來暫時停止它。

小例子位於http://www.howtoforge.com/forums/archive/index.php/t-3628.html

大解釋在http://developer.novell.com/wiki/index.php/Writing_Init_Scripts

答案4

您可以透過在命令列末尾附加「&」符號來在 Linux 上的後台運行任何任務,例如

java -jar test.jar &

相關內容