如何在没有返回码 -1 的情况下通过 ssh 连接重新启动?

Yet*_*RCG 10 shell ssh reboot

我正在使用的系统ssh用于远程连接到 Linux 机器。然后它执行单个 shell 命令并分析 shell 命令的输出。

如果我运行reboot,我会得到退出代码-1,因为重启当然会杀死 ssh 连接。0 以外的任何退出代码都会使系统注册失败,因此我一直在尝试编写一个单行命令,该命令将重新启动并ssh正常退出会话。

有问题的机器非常简单,重启实用程序不允许任何选项,所以我不能只安排稍后重启。

经过一番思考后,我尝试跑步

$ sleep 3 && reboot & exit
Run Code Online (Sandbox Code Playgroud)

当我手动调用它时有效:连接关闭并显示错误代码0,3 秒后机器重新启动。伟大的。

但是通过我们的系统运行的相同命令实际上并没有重新启动。它只返回退出代码 0,并且永远不会重新启动。

为什么会这样?

Ric*_*ich 6

使用shutdown命令。

shutdown --reboot +1 "System is going down for reboot in 1 minute"
Run Code Online (Sandbox Code Playgroud)

我怀疑原因reboot不起作用是因为它需要一个 tty。您可以尝试使用后台 tty 运行它,但该shutdown命令具有您需要的一切,包括取消——正如它在回应中所说:

Shutdown scheduled for Thu 2018-02-22 15:19:33 MST, use 'shutdown -c' to cancel.
Run Code Online (Sandbox Code Playgroud)