如何通过 ssh 关闭远程服务器而不会收到'broken pipe'错误?



我需要在脚本中通过 ssh 重新启动远程服务器并收到 0 退出代码。

我已经将所有内容设置为使用密钥而不是密码;所以我能够远程登录。问题是当我发送shutdown -r命令时,ssh 会报告管道损坏。

我试过使用-oConnectTimeout=1-oTCPKeepAlive=no.我也尝试过用shutdown -r -t 30延迟关机,但它似乎不起作用。

ssh thor@$hammer_time -oBatchMode=yes "sync; sync; shutdown -r"

现在脚本将挂起一分钟,并报告非零退出状态:broken pipe这是我希望的,因为服务器刚刚重新启动。如何让 ssh 登录,并在发送重新启动命令后使用重新启动的退出代码退出而不会收到损坏的管道错误?

我认为

正确的方法是,这样您就可以重新启动机器......"-h"标志将关闭它。

sudo shutnow -r now

如果挂断有问题,以下方法可能有效,

nohup sudo shutdown -r now

您正在命令作业在断开连接后在后台运行

gnome-session-quit --power-off
gnome-session-quit --reboot --force

适用于 Linux 用户

最新更新