Jenkins-ssh远程执行nohup- java无法退出

一,初步

#执行方式
ssh  192.168.2.103    " nohup  java -jar /home/a/ipf/ight/feedback/ixxxedback-platform-1.0-SNAPSHOT.jar  > out.file 2>&1  &"

执行完这边立即断开,日志写在指定文件。
参考文章:
https://blog.csdn.net/oneinmore/article/details/50073443

示例:
  ssh target "./test.sh"                            # 等待命令完成后退出;本地Ctrl+C中断ssh会话,不会中断test.sh的执行(bash父进程变为1)(与登录终端执行命令而终端连接断开时的行为不一样)
  ssh target "./test.sh &"                        # 等待命令完成后退出;本地Ctrl+C中断ssh会话,不会中断test.sh的执行(bash父进程本来就为1)
  ssh target "nohup ./test.sh &"                          # 等待命令完成后退出;本地Ctrl+C中断ssh会话,不会中断test.sh的执行(bash父进程本来就为1)
  ssh target "nohup ./test.sh >/dev/null 2>&1 &" # 启动test.sh执行后就会退出(bash父进程本来就为1)
  ssh target "./test.sh >/dev/null 2>&1 &"            # 启动test.sh执行后就会退出(bash父进程本来就为1),这也表明ssh不退出与nohup命令本身没有什么关系



jenkins ssh远程执行nohup Java 后无法断开


#问题
Jenkins  exec 执行shell 脚本,远程启动jar 包后控制台信息一直在转圈,无法正常退出。命令为:

ssh  user@IP " source    /etc/profile   &&  nohup  java   -jar xxxxx.jar  >  `date  +%m%d`-out.file 2>&1 &"
    
查看部署服务器服务启动正常。
在Jenkins服务器上看进程   :
ps  -ef |grep  jenkins   发现子进程无法退出,即是执行启动命令,如上。

手动杀死后,部署服务器没有异常,说明nohup 没有异常,只是ssh  执行后没有退出。


su   jenkins   进入后手动执行如上命令;没有正常退出,去掉source   /etc/profile  重试, 无法正常启动jar 包,应该是没有环境变量。使用绝对路径执行:

ssh  user@IP " nohup   /path/to/bin/java   -jar xxxxx.jar  >  `date  +%m%d`-out.file 2>&1 &"   后成功,原因是source 引起的,导致ssh  执行后无法退出,具体原理不清楚。


原文地址:https://www.cnblogs.com/g2thend/p/11702852.html