如何通过SSH连接重启主机且避免返回码-1?
优雅重启Linux主机并正常结束SSH会话的单行命令
太懂这个痛点了!直接通过SSH执行reboot时,主机重启会立刻掐断连接,导致本地拿到非0返回码(通常是-1或255),被系统判定为执行失败。针对这种精简主机的场景,给你一个完美的单行解决方案:
(sleep 1 && reboot) & exit
为啥这个命令能解决问题?
- 后台执行重启逻辑:用括号
()把重启相关命令打包成子shell,丢到后台(&)运行,当前的SSH shell不会傻等重启完成 - 给会话留退出时间:
sleep 1是个小技巧,让当前shell有足够时间执行exit命令,确保SSH会话干净关闭后,再触发主机重启,避免连接提前中断 - 返回成功状态码:
exit会让SSH会话正常结束,给本地返回0的成功码,完全符合系统对“执行成功”的判定标准
如果你的极简主机连sleep都没有(这种情况极少),也可以用更硬核的版本:
(reboot) & exit
不过还是更推荐加1秒延迟,能避免极端情况下重启命令抢在exit前执行,导致还是出现连接中断的返回码。
内容的提问来源于stack exchange,提问作者YetAnotherRCG
相关产品推荐
相关产品推荐

