Jenkins-ssh遠程執行nohup- java沒法退出

##一,初步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  執行後沒法退出,具體原理不清楚。
相關文章
相關標籤/搜索