首页 > 其他分享 >jenkins nohup 启动失败原因

jenkins nohup 启动失败原因

时间:2024-08-14 18:49:00浏览次数:11  
标签:脚本 java jar 失败 nohup jenkins 执行

前提nohup命令在命令行正常执行,仅限Jenkins执行脚本中nohup命令或SCM中执行错误或直接退出

1.问题

通过jenkins执行shell脚本时,脚本中是通过nohup java -jar &的方式启动,显示执行成功,但是服务却没启动,脚本如下:

nohup /usr/src/java/bin/java -Xms512m -Xmx512m -jar /opt/application/apps/finance-business-product-web-1.0.1.jar --spring.profiles.active=uat  >/opt/application/logs/product-web.log 2>&1 &

也就是说当通过Jenkins构建完后推送到业务服务器,在执行脚本时,脚本中的 nohup 命令无法正常退出,构建前台任务就卡住了,或者是nohup总是无效直接退出了。

2.排查

1.在命令行执行nohup命令,命令正常执行

2.Jenkins调用脚本执行非nohup命令,脚本执行正常

排查结论:jenkins执行非nohup命令,脚本执行正常,执行带有nohup脚本的时候出现了问题。也就是说构建命令中如果带有 nohup xxx & 触发构建后并构建成功后,虽然但在构建任务的输出中却显示没有问题,也没有任何报错,但是并没有执行shell脚本。

3.原因

jenkins默认会在构建完成后,杀掉构建过程中由shell命令触发的衍生进程。

jenkins根据BUILD_ID识别某个进程是否为构建过程的衍生进程,故修改BUILD_ID后,jenkins就无法识别是否为衍生进程,则此进程能在后台保留运行。

结论就是Jenkins程序只负责运行伪命令行nuhup 命令,并不保证是否成功运行 nuhup后面的命令。

4.解决

1.使用 BUILD_ID=xxx ,其中xxx可以是任意内容(只要不是原来的BUILD_ID内容即可)

#! /bin/bash
BUILD_ID=dontKillMe
nohup /usr/src/java/bin/java -Xms512m -Xmx512m -jar /opt/application/apps/finance-business-product-web-1.0.1.jar --spring.profiles.active=uat  >/opt/application/logs/product-web.log 2>&1 &

2.使用at now代替nohup命令(需要atd服务运行)

#! /bin/bash
set +e #执行的时候如果出现了返回值为非零将会继续执行下面的脚本
echo "/usr/src/java/bin/java -Xms512m -Xmx512m -jar /opt/application/apps/finance-business-product-web-1.0.1.jar --spring.profiles.active=uat  >/opt/application/logs/product-web.log" | at now

抄自于:https://www.cnblogs.com/whm-blog/p/16779474.html

 

标签:脚本,java,jar,失败,nohup,jenkins,执行
From: https://www.cnblogs.com/panwenbin-logs/p/18359582

相关文章

  • Jenkins升级
    1.备份原本jenkins的数据备份原本jenkins的数据包括使用的插件,jenkins中的job数据等,这些都在你安装的jenkins路径下的.jenkins这个文件加里面:whereisjenkins#找到jenkins的war包jenkins的.jenkins包一般来说是在安装jenkins.war包这个用户的跟目录下,cd~/#进入用户根目......
  • 安防监控综合平台EasyCVR接入海康私有协议EHOME显示失败是什么原因?
    安防监控/视频综合管理平台/视频集中存储/磁盘阵列EasyCVR视频汇聚平台,支持多种视频格式和编码方式(H.264/H.265),能够轻松对接各类前端监控设备,实现视频流的统一接入与集中管理。安防监控EasyCVR平台支持多种流媒体传输协议,包括国标GB/T28181协议、RTMP、RTSP/ONVIF、部标JT808协议......
  • linux中shell脚本手动执行没有问题,crontab定时执行失败(实测已解决)
    原文链接:https://blog.csdn.net/lukabruce/article/details/93851477问题描述:Shell脚本手动执行可以正常运行,并得到正确结果;使用Crontab定时调度的时候,Shell脚本执行出来的结果数据量为0。原因:Linux下用crontab执行定时任务不会缺省的从用户profile文件中读取环境变量参数,所以......
  • 在K8S中,Jenkins如何集成K8S集群?
    在Kubernetes(K8s)中集成Jenkins是一个常见场景,尤其是在持续集成/持续部署(CI/CD)流程中。以下是详细的步骤和说明,介绍如何在Kubernetes集群中部署和配置Jenkins。1.准备Kubernetes集群确保你有一个运行良好的Kubernetes集群,并且你有权限在这个集群上执行操作。如果你还......
  • Jenkins配置分布式构建环境——添加固定Agent并使用JNLP启动Agent详解
    1、概述在《Jenkins部署架构概述 》这篇博文中对Jenkins部署架构进行了讲解。对于分布式架构,Jenkins包括固态Agent和动态Agent两种方案。固定Agent(常用于虚拟机):Agent容器一直运行,任务构建完成后不会销毁,创建完成后将一直占用集群资源,配置过程较简单。动态Agent(常用于K8s):构建......
  • 利用Jenkins Pipeline高效部署Kubernetes服务
    什么是JenkinsPipelineJenkinsPipeline是一种持续集成和持续交付(CI/CD)的功能,它允许开发者将复杂的构建、测试和部署流程编码为一系列称为“管道”的自动化步骤。这些步骤以Groovy脚本的形式编写,并且可以在Jenkins中可视化管理。Pipeline提供了代码化和可重用的构建过程,支持更......
  • docker 部署 Jenkins
    dockerrun-d-uroot-p9095:8080-p50000:50000--namejenkins-v/data/jenkins:/var/jenkims_home-v/etc/localtime:/etc/localtimejenkins/jenkins查看容器日志,获取初始密码 ......
  • pbootcms教程—设置的会话目录创建失败!
    pbootcms教程—设置的会话目录创建失败!这个问题常见于宝塔面板,用户将pbootcms模板传到宝塔上,打开域名出现这个问题。解决方法:1、打开宝塔面板,左侧找到文件,找到对应的站点目录,如下图:2、按照下图进行设置,点确定,如果默认就是这样的设置,也要点下确定。 ......
  • flannel容器启动失败,日志报错“Failed to find any valid interface to use: failed t
    现状k8s部署,flannel容器起不来,不断重启,查看日志报错"Failedtofindanyvalidinterfacetouse:failedtogetdefaultinterface:Unabletofinddefaultroute"排查过程根据报错提示,可能是网卡名称奇怪导致,或者没有默认路由查看默认路由很显然是有默认路由的查......
  • PbootCMS上传图片失败或提示:未知错误
    1、空间是否满,是否有权限2、切换一下php版本,用php7.0试试3、用最新的版本替换掉ueditor所有文件PbootCMS-V3.1.3版本后台正常使用,但是编辑器上传图片一直显示无法成功,今天就来处理这个问题。问题:1:单图片上传按钮点击没反应或上传后一直无法成功。2:多图片上传显示后台配置项......