【问题标题】:How do I shutdown a remote server via ssh without getting a 'broken pipe' error?如何通过 ssh 关闭远程服务器而不会出现“管道损坏”错误?
【发布时间】:2019-02-12 22:25:15
【问题描述】:

我需要在脚本中通过 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 登录,并在发送重启命令后使用重启的退出代码退出,而不会出现管道损坏错误?

【问题讨论】:

  • 对我来说,以下所有 ssh 命令在 Ubuntu 18.04 上以 0 状态正常退出。 ssh sever 'sudo shutdown -r'ssh sever 'sudo shutdown -r 0'ssh sever -oBatchMode=yes 'sudo shutdown -r 0'。我无法重现损坏的管道错误。
  • 我没想到!他们在服务器上使用不同的操作系统,并使用自定义关闭脚本。谢谢!那我应该删除这个问题吗? @Socowi?
  • 可以删除此答案,但如果您能回答自己的问题,这样其他有相同问题的人也可以从您的发现中受益,那就更好了。

标签: bash ssh shutdown


【解决方案1】:

我认为正确的方法是,这样你正在重新启动机器......“-h”标志只会将其关闭。

sudo shutnow -r now

如果挂断有问题,以下可能会起作用,

nohup sudo shutdown -r now

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

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

适用于 Linux 用户

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多