Jenkins踩坑之旅:nohup后台执行shell命令

Jenkins实践(2):Jenkins执行shell命令(本地和远程执行) jenkins执行shell命令 执行本地命令或shell脚本 执行本地的一个脚本 3.执行远程机器命令或shell脚本 3.1.ssh 插件要安装好配置ssh权限 3.2.点击“系统管理”-->“系统配置”, 添加权限(这里使用的是用户密码)后,点击check connection,Successfull connection代表连接成功。 4.执行远程机器10.1.1.74的shell脚本 test.sh #!/bin/bash cd /home/cg pwd e 阅读详情

有时我们希望将某个命令放在后台执行,然后并行(异步)执行其他命令。但在Jenkins上很容易遇到无法真正将命令放到后台运行的问题。

原因是pipeline在退出node{}的时候,会默认清理自己发出的每个shell命令,即使使用了nohup。

例如如下代码无法在后续的进程查找中找到top进程

pipeline {
    agent {
        label 'master'
    }
    stages {
        stage('Example') {
            steps {
                script {
                    node("vm-1") {
                        sh "nohup top -b > /dev/null &"
                    }
                    node("vm-1") {
                        sh "ps -ef | grep top"
                    }
                }
            }
        }
    }
}

执行结果如下

[Pipeline] sh
+ grep top
+ ps -ef
tengrui   21907  21904  0 06:10 ?        00:00:00 grep top

解决方法是加入环境变量BUILD_ID=DONTKILLME

pipeline {
    agent {
        label 'master'
    }
    stages {
        stage('Example') {
            steps {
                script {
                    node("vm-1") {
                        sh "BUILD_ID=dontKillMe nohup top -b > /dev/null &"
                    }
                    node("vm-1") {
                        sh "ps -ef | grep top"
                    }
                }
            }
        }
    }
}

运行结果如下

[Pipeline] sh
+ ps -ef
+ grep top
tengrui   21915      1  1 06:11 ?        00:00:00 top -b
tengrui   21925  21922  0 06:11 ?        00:00:00 grep top

注:

  1. 当pipeline退出node{}代码块的时候,才会清理shell进程
  2. 也可以使用JENKINS_NODE_COOKIE=dontKillMe
【学术情报智库】目录学的数字化蜕变:从古籍整理到AI知识图谱的跨越 我们既是浩瀚知识的守望者,也是数字智识的开拓者。目录学数字化不是技术替代传统,而是融合创新,让学术的系统性与多样性在新媒介下焕发新的生命。以AI为桥,既要智能链接,也要人文关照——这是对自我文明的深情回应,也是新知时代的庄严约定。 阅读详情

相关推荐

DVWA全级别详细通关教程

dvwa全级别详细通关教程,暴力破解,命令注入,CSRF跨站请求伪造,文件包含,文件上传​,SQL注入,XSS

m0_62063669的博客 1万+

jenkins发布java项目和执行shell脚本nohup的总结

jenkins发布java项目,执行shell脚本的问题

低调说 3102

数字加网(一)— —概念及分色合成

由于大多数图像复制设备是二值设备,因此在图像复制过程中,必须先把连续调的灰度图像或彩色图像处理成二值的半色调图像,用单位面积的网点覆盖率来表现图像的颜色深浅变化。这个过程被称之为加网(Screening) 数字加网就是根据人眼视觉的空间混色特性,用人眼无法分辨的细小黑白点的单位覆盖面积来模拟灰度图像或彩色图像的层次变化,使得到

Sin_Geek成长の迹 8591

jenkins编译使用nohup部署进程到后台失败,解决方法

原理:jenkins默认会在构建完成后杀掉构建过程中shell命令触发的衍生进程。jenkins根据BUILD_ID识别某个进程是否为构建过程的衍生进程,故修改BUILD_ID后,jenkins就无法识别是否为衍生进程,则此进程能在后台保留运行。在shell脚本中加入BUILD_ID=dontKillMe。server为二进制文件。

yang20000222的博客 2171

Fiddler everywhere的一些基础操作

网上能搜到的Fiddler everywhere使用教程太少,于是我整理了一些自己实操成功的内容,包括Fiddler everywhere的Mock测试、弱网测试等基础操作,后续还会持续更新。操作系统:macOS使用工具:Fiddler everywhere 5.10.0本文简单介绍了使用Fiddler everywhere进行的Mock测试和弱网测试,而Fiddler everywhere提供了更多的其他实用的功能,我会在后期进行一个持续的学习和更新。

weixin_44346646的博客 2478

反激开关电源变压器设计实例讲解(定明芳)

内容来自《反激变压器的设计》(定明芳主讲)。 定名芳老师主要讲了10步,最后应该还有一步,线径的选择已经绕制方式。这里进行了记录整理,把一些公式来源进行了推导。所有的设计都是基于理论计算。 1.确定电源规格 2.确定工作频率和最大占空比 3.计算匝比(利用伏秒平衡原则) 此处插入解释一下伏秒平衡,根源是磁通量平衡。该原则可以用来检查MOS管耐压是否够。 4.计算初级线圈峰值电流 基于CCM模式计算的。ip1是开关管要关闭时的峰值电流,ip2是开关管开始导通时的起始电流。因为时CCM模式,所以,ip

ydgd118的博客 5万+

【Jenkins】Jenkins nohup执行失败

参考文档:https://blog.youkuaiyun.com/a772304419/article/details/137957716。结合官方文档以及众多资料可知,Jenkins的nohup是伪后台命令,当当前Pipline中的任务执行完成后,在使用Jenkins进行构建过程中,对于脚本中的nohup命令没有响应。命令执行的内容也会随即退出,为了防止nohup命令退出,可以设置环境变量。命令没有任何响应,对于同样的脚本,在Linux本地使用。当使用Jenkins调用脚本时,脚本中其它命令比如。

七夜之家 1763

六轴机器人正解

采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1​ ai−1a_{i-1}ai−1​ did_idi​ θi\theta_iθi​初值 1 0 0 0 0 2 -90 a1a_1a1​ 0 -90 3 0 a2a_2a2​ 0 -90 4 -90 a3a_3a3​ d4d...

m0_37581770的博客 2511

jenkins使用shell脚本自动部署java项目,nohup启动不成功

改动的地方:sh执行脚本改为bash,ubuntu系统会提示source:command not found,centos/redhat可以不修改。百度搜索了很长时间,很多种说法,但是都没说太明白,整合了很长时间,测出来了解决方法,仅测试了自由风格项目和流水线项目,其他的选项未测试,jenkins版本2.400。执行脚本时,因为jenkins会在构建结束时,将shell运行期间产生的进程全部关闭,所以nohup启动项目会被自动关闭。echo '部署完成'stage('部署程序') {

wpf优快云的博客 2808

YOLOv10改进,YOLOv10二次创新C2f结构采用WTConv卷积(感受野的小波卷积),ECCV 2024

WTConv 的核心思想是通过结合卷积神经网络(CNN)的强大特征提取能力与小波变换的多尺度特性,来实现大感受野的卷积操作,同时避免传统大卷积核带来的参数爆炸问题。传统的卷积操作通过滑动小窗口在图像上逐步执行局部特征提取,感受野的大小直接取决于卷积核的尺寸。随着卷积核的增大,参数量呈指数增长,导致网络训练效率降低、计算资源消耗增加。为解决这些问题,WTConv 提出了在小波域中执行卷积操作的策略。小波变换是一种常用于信号处理的技术,能够将信号分解为不同频率成分。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1023

QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)

一、环境介绍 QT版本: 5.12.6 编译环境: win10 64位 目标系统: Android 完整工程源码下载地址(包含APK文件):https://download.youkuaiyun.com/download/xiaolong1126626497/19051696 二、功能介绍 本软件是一款BLE蓝牙串口调试助手,支持常规的发送和接收调试,BLE是低功耗类型蓝牙,在智能家居、物联网领域使用较多。BLE低功耗蓝牙一般不能直接使用手机进行连接,手机蓝牙默认都是工作在传统蓝牙模式,无法直接连接BL..

7660

jenkins使用shell脚本执行nohup java -jar包失败

jenkins使用shell脚本执行nohup java -jar包失败

joshua317的博客 5783

STM32步进电机控制三大方案:GPIO/定时器/PWM深度对比

步进电机控制是嵌入式运动控制的基础技术,其核心在于精确生成脉冲(PUL)、方向(DIR)和使能(EN)三路数字信号。原理上,脉冲频率决定转速,脉冲数量决定位置,方向电平决定转向,而使能时序保障驱动器可靠启停。该技术具有高定位精度、开环稳定性与低成本优势,广泛应用于3D打印机、CNC设备、自动化产线等场景。在STM32平台实现时,需兼顾硬件隔离设计(如6N137光耦)、HAL库抽象封装及实时性约束。本文围绕GPIO模拟、定时器中断与PWM比较输出三种主流方法,系统剖析其时序机制、CPU开销、抗干扰能力与工业适

weixin_35755640的博客 86

记录一下jenkins发布jar包,shell命令为nohup的一个坑点

问题: 因为目标服务器的配置原因(太拉胯了),直接使用nohup java -jar运行jar包,随后将命令编成两个sh文件,一个用来关闭端口,一个用来运行jar包。再配置jenkins方便发布,在执行启动命令时候失效。 排查: 因为端口关闭成功,首先排除文件位置、用户权限、文件权限等常见问题。 输出nohup文件,但是文件为空。可以判断已执行启动命令,但是启动失败。 顺着2的思路直接放入nohup命令代替sh命令,执行启动发现失败。大概确定是nohup命令有问题。 结论: 因为没有系统地学习过linu

叽叽叽叽叽叽叽叽叽叽叽叽叽叽叽叽 2235

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jenkins 后台执行shell

1、错误 执行shell中,如下写法,不执行 rm -rf /work/xx.jar cp sc.web/target/xxx.jar /work/ cd /work nohup sh service.sh restart >/dev/null 2>&1 & 2、解决 BUILD_ID=DONTKILLME #后台执行 rm -rf /work/xx.j...

幽静净土的技术分享 2636

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Jenkins的流水线执行shell脚本执行jar命令后项目未启动未输出日志问题处理

在Jenkins流水线中配置启动脚本时,可能会遇到服务未启动且nohup日志无输出的情况。这通常是因为Jenkins在执行完脚本后自动终止了相关进程。为解决此问题,可以在启动脚本执行jar命令前加入变量

DN金猿的博客 936

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jenkins执行nohup命令后台启动后,程序直接挂掉解决方案

在shell脚本中加入BUILD_ID=dontKillMe #!/bin/bash BUILD_ID=dontKillMe nohup java -jar kevin-eureka-0.0.1-SNAPSHOT.jar >> nohup.out &

Cavan_C的博客 3851

tools-jenkins-nohup启动失败

jenkins

天涯过客 406

jenkins kill后台进程或者衍生进程的解决方案

Jenkins杀掉后台进程问题 使用Jenkins部署后台进程,被kill掉解决 Jenkins远程部署启动shell 文件时无法启动程序,但是jenkins 没有报错,Jenkins显示后台启动正常 原因分析,网上说的我觉得都对,就是jenkins会杀后台以及衍生的程序,这里我用了很多网上的方法,实现启动的程序功能的我有两种,一种是同事写的,一种是我自己捣鼓出来的,这两种解决方案都提供给大家。 先写网上的各种解决方案,看到最多的就是下面这 export BUILD_ID=dontKillMe 这种方式我

Climber4211的博客 3866

Jenkins pipeline JENKINS_NODE_COOKIE踩坑记录

在普通的shell环境中,nohup,并且& 某个程序后,会抛到后台执行,在退出当前shell环境后,程序依然可以执行。但是在Jenkins的pipeline中,通过nohup,且使用&之后,step结束后,执行的程序还是会退出,导致程序起不来。 1)export JENKINS_NODE_COOKIE=dontKillMe很重要,pipeline在退出node{}的时候,会默认清理自己发出的每个shell命令,即使使用了nohup。 2)后台执行java程序,一定要加上{-Dhuds

u011442726的博客 2552

[Jenkins-1]解决Jenkins使用nohup挂起线程指令显示SUCCESS但实际上没有执行的问题

问题简述 构建命令中带有 nohup xxx & 触发构建后并构建成功后,发现并没有执行该后台命令,但在构建任务的输出中却显示没有问题,也没有任何报错 解决方法 在百度查了很久,都没有找到能解决问题的方法,有一篇文章提到使用 BUILD= xxx 能解决问题,但实际上没有用,构建任务如果执行类似启动jar这种命令的话,照样还是不能挂起线程,构建队列也一直卡着这个任务,这个看着最靠谱的方法也没用. #1 为此,我尝试到stackoverflow找解决方法,很快就找到了这个差不多的问题 #2 评论区

负熵电光丸 2144

Jenkins发布spring项目踩坑——nohup java -jar发布后显示成功,但实际jps查询并未运行

Jenkins部署SpringBoot应用时,直接使用nohup java -jar可能导致进程被误杀。解决方法是:1) 设置BUILD_ID为任意值,防止Jenkins识别为衍生进程;2) 采用ps+grep精准查找并终止旧进程;3) 将日志输出到指定文件。部署流程包括:创建目标目录→拷贝新jar包→安全停止旧服务→设置BUILD_ID后启动新进程。注意Jenkins仅负责执行命令,不保证后台进程是否真正运行成功。

qq_35215728的博客 2398

Jenkins中通过execute shell无法启动进程-解决方案合集

一、问题描述 jenkins使用publish over ssh,执行shell,没报错,日志输出成功 23:43:13 SSH: EXEC: completed after 10,225 ms 23:43:13 SSH: Disconnecting configuration [swarm2] ... 23:43:13 SSH: Transferred 1 file(s) 23:43:13 Finished: SUCCESS 但问题就是,在服务器上,该进程没有运行。。很尴尬。在jenkins上发现了问

饰坠之罪的博客 2803

jenkins 链接远程服务器,执行shell脚本后台启动java工程,项目已启动成功,jenkins界面仍在转圈

jenkins 链接远程服务器,执行shell脚本后台启动java工程,项目已启动成功,jenkins界面仍在转圈

qq_31564573的博客 1940

jenkins发布执行shell命令

jenkins发布执行shell命令

918

jenkins 命令无法后台运行,使用BUILD_ID=dontKillMe解决

例子: jenkins如果在shell里使用nohup发现还是不能后台运行,直接挂掉。 那么可以在jenkins命令里加上BUILD_ID=dontKillMe解决

做你想做的人,没有时间的限制,只要愿意,什么时候都可以start。 1万+
上一篇: Springboot项目使用java -jar 启动jar包参数详解
下一篇: Jenkins Tips:去掉pipeline中shell命令的调试信息
qq_34412985
博客等级 码龄11年 143粉丝 983原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值