场景

  • 服务器A:CentOS_A,假如IP:1.1.1.1
  • 服务器B:CentOS_B,假如IP:2.2.2.2 要在服务器B上远程执行存放在服务器A上的test.sh脚本 假如test.sh内容如下
#! /bin/bash
echo "测试"
nohup java -jar springboot.jar &

nohup挂起,这个命令在我们操作的机器上,一般执行完之后Ctrl+C退出,但是放到脚本里面,或者远程直接执行该命令之后会一直停留,不会退出

解决

将命令修改以下

nohup java -jar springboot.jar >/dev/null 2>&1 &

服务器之间如何进行免密,见文章:CentOS服务器之间免密登陆及传输

情况一

在服务器A远程执行服务器B上的test.sh脚本命令,一定要是绝对路径

ssh root@2.2.2.2 "sh /root/test.sh"

情况二

在服务器A操作存放在服务器A的test.sh脚本内容,执行test.sh到服务器B,test.sh的路径也是要绝对路径

ssh root@2.2.2.2 < /root/test.sh

ps:不过在经测试的时候有个问题,测试情况一的时候,并不会执行nohup这条命令,目前也不知道为什么 参考:https://blog.csdn.net/oneinmore/article/details/50073443