gpt4 book ai didi

Ubuntu-process 不是从 jenkins 启动的

转载 作者:行者123 更新时间:2023-12-04 19:16:56 24 4
gpt4 key购买 nike

我正在尝试运行以下脚本以从 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 启动命令”。

我什至尝试使用构建参数“dontKillMe”但仍然没有结果。

任何帮助,将不胜感激。

提前致谢

最佳答案

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

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,但一旦工作完成,该进程就会被终止。这就是为什么看起来好像该过程没有开始的原因。

关于Ubuntu-process 不是从 jenkins 启动的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34349108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com