如何讓java程式脫離控制檯執行
阿新 • • 發佈:2019-02-12
最後,發現原來解決辦法相當easy:將java命令改為javaw命令!這個命令經常在工作管理員裡發現,卻一直沒留意過,今天才發現它是這般用法,不過這個命令不像java樣有幫助資訊,只好看看官網的解釋:
The javaw command is identical to
java, except that with javaw there is no associated console window. Use
javaw when you don't want a command prompt window to appear. The
javaw launcher will, however, display a dialog box with error information if a launch fails for some reason.
不過現在有個問題:如何關閉用javaw啟動的程式?我現在只能用工作管理員或者Linux裡的kill。
改:
錯了,javaw只能在win32平臺上使用,在Linux/Unix沒這個命令。汗.......
只是再次去網上爬。費了好久功夫,慢慢意識到,要使程式成為後臺程式,方便的做法不是改程式本身,而是改啟動程式的方式。於是找到了nohup這個命令。趕緊試試,寫了個sh指令碼如下(相當簡單)
nohup java -jar proxy.jar > ./log/console_output & |
上面nohup的作用是使java -jar proxy.jar這個命令執行後忽略hangup singal,這樣即使logout了它也還在執行。值得注意的是nohup本身不會將命令在後臺執行,所以最後還得加一個&。 另外“>> ./log/console_output”的意思是將程式向控制檯列印的資訊重定向到指定的檔案,這對後臺執行的程式很重要,因為如果程式一直向控制檯的緩衝區寫資料而資料又得不到清空的話會導致程式crash。
原文出自:http://blog.chinaunix.net/uid-20443874-id-1945877.html