通过ssh重新启动时挂起并断开pipe道

我试图从另一个盒子重新启动一个盒子,使用下面的命令:

ssh 10.0.0.26 'reboot --force' 

我预计这会阻止一段时间,直到另一个盒子重新启动,然后返回。 我看到发生了一段时间没有活动,那么如果我按下一个键,我会得到“写入失败:断开的pipe道”。

另一个盒子的重新启动就像预期的那样工作,但是我想清除本地盒子上的输出,理想情况下,不要把它全部隐藏在/ dev / null中。

我在Redhat 6上使用OpenSSH 5.3p1。

编辑:我发现我自己的解决scheme; 我将在下面添加这个答案。 但似乎我还不能接受这一点。 我想这是给别人一个更好的解决scheme的机会。

您可以安排重启而不是立即重启。 看看这个post 。

工作线路如下:

 ssh 10.0.0.26 'reboot --force >/dev/null &' 

最后&告诉其他系统在后台运行该命令。 然而,这仅仅是不够的,因为在任何输出的情况下ssh连接都试图保持打开状态。 因此发送标准输出为空。

如果你真的想等到重启动完成(例如ssh会话被终止),那么每秒轮询一次服务器,如果在5次尝试中失败应答,则退出:

 ssh -o ServerAliveInterval=1 -o ServerAliveCountMax=5 10.0.0.26 'reboot --force > /dev/null' 

[ 这里的讨论指出了正确的参数。]