我正在尝试使用以下命令从另一个盒子重新启动一个盒子:
ssh 10.0.0.26 'reboot --force'
我预计这会阻塞一小会儿,直到另一个盒子重新启动,然后返回。我看到的情况是一段时间内没有任何活动,然后如果我按下一个键,就会出现“写入失败:管道损坏”。
另一个盒子的重新启动工作正如预期的那样,但我想清除本地盒子上的输出,最好不要将其全部隐藏在/dev/null中。
我在 Redhat 6 上使用 OpenSSH 5.3p1。
编辑:我找到了自己的解决方案;我将在下面添加这个答案。不过,似乎我现在还不能接受这一点。我想这是为了让其他人有机会提出更好的解决方案。
答案1
您可以安排重启,而不是立即重启。请查看这个帖子。
答案2
有效的线路如下:
ssh 10.0.0.26 'reboot --force >/dev/null &'
最后一条命令&
告诉其他系统在后台运行该命令。然而,这还不够,因为 ssh 连接会尝试在任何输出的情况下保持打开状态。因此将 stdout 发送到 null。
答案3
如果您确实想要等到完全重启(例如 ssh 会话终止),则每秒轮询服务器一次,如果 5 次尝试内仍未应答则退出:
ssh -o ServerAliveInterval=1 -o ServerAliveCountMax=5 10.0.0.26 'reboot --force > /dev/null'
[讨论这里向我指出了正确的参数。