在使用Jenkins进行构建过程中,对于脚本中的nohup命令没有响应。
问题描述
当使用Jenkins调用脚本时,脚本中其它命令比如mv/cp
等命令均可以正常执行,但是nohup
命令没有任何响应,对于同样的脚本,在Linux本地使用root
账号执行时,则可以正常执行。
原因分析
结合官方文档以及众多资料可知,Jenkins的nohup是伪后台命令,当当前Pipline中的任务执行完成后,nohup
命令执行的内容也会随即退出,为了防止nohup命令退出,可以设置环境变量JENKINS_NODE_COOKIE=dontKillMe
具体使用方式如下:
shell
# 使用方法一
sh '''
#!/bin/bash
export JENKINS_NODE_COOKIE=dontKillMe
# 应用重启
echo "重启${project_name},端口${project_port}"
# 根路径
basePath=/data/data
logPath=$basePath/logs/${project_name}_log.log
pidPath=$basePath/pid/${project_name}.pid
# appPort=8083
appName=${project_name}.jar
echo "1. 根据端口号kill进程$appName"
pid=$(netstat -nlp | grep :${project_port} | awk '{print $7}' | awk -F"/" '{ print $1 }');
echo "1.1 杀掉对应的进程,如果pid不存在,则不执行"
if [ -n "$pid" ]; then
kill -9 $pid;
fi
echo "睡眠3s,防止停止任务没有完成"
sleep 3s
echo "1.2 移除无效日志文件"
rm -rf $logPath
rm -rf $pidPath
echo "1.3 判断文件是否存在"
if [ -f "$basePath/apps/$appName" ]; then
mv $basePath/apps/$appName $basePath/backup/$appName.`date +'%Y%m%d%H%M'`
fi
cp ${WORKSPACE}/${project_name}/build/libs/${project_name}.jar $basePath/apps/$appName
echo "2. 启用进程"
nohup /data/data/libs/jdk11/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -jar $basePath/apps/$appName -Dspring.profiles.active=${nacos_group} --NACOS_GROUP=${nacos_group} --NACOS_SERVER_ADDRESS=${nacos} --SERVICE_NAME=${service_name} > $logPath 2>&1 &
echo $! > $pidPath
shell
# 使用方法二
# 注意:经测试,对于存在自定义参数的情况(比如引用时使用:${project_name}) ,无法使用下面的方法,会报错,但是方法一没有问题
pipeline {
agent any
stages {
stage('Start Application') {
steps {
script {
withEnv(['JENKINS_NODE_COOKIE=dontKillMe']) {
// 启动应用的命令,这里以 nohup java -jar 为例
sh """
nohup java -jar your-application.jar &
echo "Application started with PID: $!"
sleep 3
# 可选:检查进程是否仍在运行,确保启动成功
ps aux | grep your-application.jar | grep -v grep
"""
}
}
}
}
}
post {
always {
script {
// 可选:清理或记录操作,如记录启动的PID等
}
}
}
}
参考文档:https://blog.csdn.net/a772304419/article/details/137957716