我正在尝试从ubuntu服务器上的jenkins运行以下脚本来重新启动servicemix进程。
#!/bin/sh
killservicemix() {
if ps ax | grep -v grep | grep "apache-servicemix" > /dev/null
then
process=$(echo $(ps -elf | grep -v grep | grep "apache-servicemix" | awk '{print $4}'))
echo "killing service mix"
kill -9 $process ;
sleep 2;
killservicemix
fi
}
#Method to stop servicemix
stopservicemix() {
if ps ax | grep -v grep | grep "apache-servicemix" > /dev/null
then
echo "Stop Service mix"
/home/ubuntu/apache-servicemix-4.3.0/bin/stop
sleep 10;
killservicemix
fi
}
stopservicemix
sleep 15
#restarting Servicemix
nohup /home/ubuntu/apache-servicemix-4.3.0/bin/start >/dev/null 2>&1 &
if [ "$?" -eq 0 ]; then
ps -elf|grep servicemix
echo 'ServiceMix start command executed'
else
echo 'ServiceMix start command failed'
fi
echo 'started Servicemix';当我从终端运行这个脚本时,它工作正常。当我从jenkins运行这个脚本时,它将杀死servicemix进程,但它不会再次启动它,并显示"ServiceMix fine.But fine.But“。
我甚至尝试使用构建参数"dontKillMe“,但仍然没有结果。
任何帮助都将不胜感激。
提前感谢
发布于 2015-12-18 15:24:06
您需要的是禁用进程树杀手器。
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war我最近在尝试通过Jenkins启动应用程序服务器时遇到了同样的问题。它从控制台开始运行得很好,但是当从Jenkins运行脚本时,进程消失了。
这是由于Jenkins如何处理自己的流程。默认情况下,当工作完成时,它们会被杀死,以防止系统变得混乱。通过禁用ProcessTree选项,Jenkins将使脚本(和后台进程,如服务)保持运行。这就是你的控制台工作和Jenkins不工作的区别。
nohup /home/ubuntu/apache-servicemix-4.3.0/bin/start >/dev/null 2>&1 &启动servicemix,但是一旦任务完成,这个进程就会被终止。这就是为什么它看起来好像进程没有启动。
https://stackoverflow.com/questions/34349108
复制相似问题