关于linux:ssh-远程执行命令-nohup-无效问题

6次阅读

共计 543 个字符,预计需要花费 2 分钟才能阅读完成。

昨夜 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 近程的时候执行 nohup 命令,是无奈获取被近程机器的环境变量的,所以 java 命令执行不进去,于是用如下两种形式解决。

第一种

ssh user@ip <<EOF
nohup java -jar …. &
EOF

第二种

在脚本一开始加上 source /etc/profile

正文完
 0