2015-08-20 64 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