如何通过 ssh 连接重新启动而不返回 -1 代码?

如何通过 ssh 连接重新启动而不返回 -1 代码?

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

如果我运行reboot,我会得到退出代码-1,因为重新启动当然会终止 ssh 连接。 0 以外的任何退出代码都会导致系统注册失败,因此我一直在尝试编写一个单行命令来ssh优雅地重新启动并退出会话。

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

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

$ sleep 3 && reboot & exit

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

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

为什么会这样呢?

答案1

使用shutdown命令。

shutdown --reboot +1 "System is going down for reboot in 1 minute"

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

Shutdown scheduled for Thu 2018-02-22 15:19:33 MST, use 'shutdown -c' to cancel.

答案2

通常你可以返回true,这将返回退出代码 0,因此:

shutdown -r now || true

相关内容