Jenkins 构建后执行 nohup 脚本,前台不退出解决

2019年1月10日11:56:41 发表评论 1,387 views

脚本内容

脚本内容很简单,就是检测 8000 端口是否监听,没有监听的话尝试启动服务,监听的话就正常退出即可。

问题

Jenkins 构建拉取代码后,将代码通过 Publish Vver SSH 插件推送到业务机器,然后执行脚本时,脚本中的 nohup 命令无法正常退出,导致构建任务前台卡住。如图:

Jenkins 构建后执行 nohup 脚本,前台不退出解决

解决

查询后发现:

Since you are executing a script from a non-TTY environment; The Jenkins is not able to get the exit properly, out of your script.What you want is to exit immediately, after script execution! Don't want to wait for the entire timeout to happen and then disconnect improperly!

意为:

从一个非 tty 环境执行脚本;Jenkins 不能正常从你的脚本中退出

解决方案:在PTY中使用Exec

Jenkins 构建后执行 nohup 脚本,前台不退出解决

Jenkins 构建后执行 nohup 脚本,前台不退出解决

虽然构建完成了,但是服务却没有启动,可能的原因是因为,在执行openapi start 命令时,刚启动,pty(伪终端)就断开连接,

解决的办法就是,加 nohup 让脚步在后台运行,也就即使伪终端断开了,项目依然可以启动完成。

Jenkins 构建后执行 nohup 脚本,前台不退出解决

 

 

 

 

  • 微信小程序
  • 关注微信小程序
  • weinxin
  • 微信公众号
  • 关注微信公众号
  • weinxin
Wangxiao

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: