2015-08-20 66 views
1

首先讓我描述我的問題。 我配置了Jenkins,構建操作後我調用shell腳本在遠程服務器上運行bash腳本。 shell腳本通過命令在Jenkins運行bash腳本執行Java代碼時顯示日誌輸出

java -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=xxx 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-XX:+HeapDumpOnOutOfMemoryError -jar name.jar "BUILD_PARAMETER" 

我看到日誌,從我在詹金斯的應用程序構建啓動應用程序,它是不斷構建過程的運行。我需要在運行 sh run命令後完成它。可能嗎?

+0

你是不是想從詹金斯服務器另一臺服務器上啓動shell腳本?你的命令是什麼? –

+0

@Naggi是的,正好在不同的服務器上。我試過*** nohup sh run.sh ***和*** sh run.sh ***。 – user2791999

+0

您在命令末尾缺少'&'。這就是將進程發送到後臺的原因 – Slav

回答

1

如果你這樣做是使用詹金斯則需要在註釋中使用nohup表示法以及爲進程指定非數字PID。詹金斯試圖通過殺死任何啓動的進程來完成工作後清理。

BUILD_ID = dontKillMe nohup的< - 您的命令 - > &

上面的命令應該工作

https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build

+0

是的,它的工作原理!謝謝。這是有用的鏈接順便說一句。 – user2791999

0

你的shell腳本需要fork一個進程並返回,否則Jenkins會認爲你的shell腳本仍在運行(如果它沒有分離進程並返回的話)。

您還沒有提供你用它來啓動應用程序的命令,但叉在linux的處理的常用方法是:

nohup <your command here> &

+0

我的啓動應用程序的命令是run.sh腳本的內容,它在主要文章中。 – user2791999

+0

因此,在'run.sh'文件中使用'nohup java <你的參數>&'。 – Slav

+0

我在Jenkins有nohup sh run.sh &,但沒有考慮更改run.sh :)。我會嘗試這一個。 – user2791999