2017-06-21 102 views
0

我試圖在Linux上執行mvn插件exec:java作爲deamon。當我這樣做,「手動」從控制檯似乎工作:啓動mvn exec:java作爲linux守護進程

$ nohup mvn -f $PATH_TO_POM exec:java -Pxyz & 

啓動守護程序和重定向通常的控制檯輸出到nohup.out文件。我無法弄清楚-P參數做什麼,但我可以用它來尋找啓動進程的PID,並殺死進程

$ pgrep -f xyz   # returns some pid, e. g. 12345 
$ kill 12345 

當我嘗試從一個簡單的bash腳本中啓動的守護進程

# this is part of bash script in separate file 
$ nohup mvn -f $PATH_TO_POM exec:java -Pxyz /tmp 2>> /dev/null >> /dev/null & 
$ pgrep -f xyz   # returns some pid, e. g. 12345 
$ jps -l    # shows that 12345 belongs to org.codehaus.plexus.classworlds.laucher.Laucher 
$ jps -m    # shows "12345 Launcher -f $PATH_TO_POM exec:java -Pxyz /tmp" 

失敗,因爲執行文件上面再

$ ps -p 12345 

存在與PID 12345沒有這樣的處理後,雖然上面的腳本提供的PID。

+0

你爲什麼想以daemon方式運行中將exec Maven的插件?出於什麼目的 ? – khmarbaise

+0

@khmarbaise,我們希望在開發過程中運行它,以便我們可以從源代碼快速啓動應用程序,無需中間構建步驟。應用程序外殼運行數天,並在服務器重啓後生存 – JCvanDamme

+0

如何使用IDE來處理這些事情? – khmarbaise

回答

0
$ nohup mvn -f $PATH_TO_POM exec:java -Pxyz 2>> /dev/null >> /dev/null & 

沒有的/ tmp工作