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  執行后無法退出,具體原理不清楚。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM