ssh 遠程執行命令 nohup 無效問題


昨夜1:00多准備睡覺了,突然一哥們咨詢了我一個問題。

他A機器上遠程執行B機器(ssh user@ip "command")上的腳本,B上的服務並沒有起來。
  • 看了下截圖,腳本確實是執行了的,而且他說B本機上執行時可以的。

  • 於是看了下腳本,其中有一段如下

if [ xxxx ];then
	xxxx
else
	nohup java -jar ../xxx.jar >/dev/null 2>&1 &
	echo "xxxx"
fi

感覺可能是相對路徑問題,於是讓他改為絕對路徑,試了后也不行。

然后讓他試了下,B上用sh -x執行腳本 ,發現也沒啥毛病。

再讓他試了下, A上遠程執行腳本,發現nohup那條命令沒執行,直接就執行了nohup后面的echo命令,A上執行方式如下

ssh user@IP "sh -x 腳本"

然后嘗試在A上直接遠程執行nohup命令也不行,如下:

ssh user@ip "nohup java -jar ../xxx.jar >/dev/null 2>&1 &" 

查了些資料發現 ssh遠程執行命令的時候,被遠程機器的有些環境變量是無法獲取的,比如java環境信息,所以java命令執行不出來,於是用如下兩種方式解決。

#第一種
ssh user@ip <<EOF
nohup java -jar .... &
EOF

#第二種
在腳本一開始加上source /etc/profile


免責聲明!

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



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