首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu-进程不是从jenkins启动的

Ubuntu-进程不是从jenkins启动的
EN

Stack Overflow用户
提问于 2015-12-18 13:35:48
回答 1查看 173关注 0票数 0

我正在尝试从ubuntu服务器上的jenkins运行以下脚本来重新启动servicemix进程。

代码语言:javascript
复制
#!/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“,但仍然没有结果。

任何帮助都将不胜感激。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2015-12-18 15:24:06

您需要的是禁用进程树杀手器。

代码语言:javascript
复制
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,但是一旦任务完成,这个进程就会被终止。这就是为什么它看起来好像进程没有启动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34349108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档