我有一个 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
在远程机器的后台运行该命令。