通过 ssh 重新启动远程服务器时,bash 脚本意外退出

通过 ssh 重新启动远程服务器时,bash 脚本意外退出

我有一个 bash 脚本(在本地机器上),其中有以下行

ssh root@remoteip "some commands; shutdown -r now"

#do other things

但是,在此行之后(远程服务器已成功重启),整个 bash 脚本就退出了(“执行其他操作”未执行)。

如何解决这个问题?

答案1

在后台运行该shutdown命令,这对我来说完成了工作:

#!/bin/bash

ssh root@remote-ip "some-command > /dev/null; shutdown -r now &"

uname -a
  • some-command > /dev/null:运行some-command并将输出重定向到/dev/null,所以我没有得到任何输出,正如你所说。
  • shutdown -r now &shutdown在后台运行命令并离开 shell 以获取进一步的命令。
  • uname#do other things为了测试目的,它将在远程系统关闭后立即执行;)不会等待它完成)。

还有其他方法也可以实现此结果,例如您可以在后台运行整个命令:

ssh root@remote-ip "some-command > /dev/null; shutdown -r now" &

或者在子 shell 中运行它:

$(ssh root@remote-ip "some-command; shutdown -r now")

虽然我建议第一个,即shutdown在远程机器的后台运行该命令。

相关内容