重启与init 6相同吗?

Modified on: Sun, 10 Jun 2018 00:27:53 +0800

重启与ubuntu的init 6相同吗?

我在Amazon EC2上运行Ubuntu 12.04。当ssh进入框中时,我可以输入runlevel,然后我得到:

N 2

man reboot我看到了:

  

使用--force或在运行级别0或6中调用时,此工具会调用reboot(2)系统调用本身并直接重新引导系统。否则,这只是使用适当的参数调用shutdown(8)工具。

如果我读man shutdown 8,我看到:

  

shutdown会安排系统以安全的方式关闭。所有登录用户都会收到系统正在关闭的通知,并且在TIME的最后五分钟内,将阻止新的登录。

我对rebootinit 6之间区别的基本了解是:

  • 在其他发行版上,也许较旧的发行版reboot只会卸载磁盘并基本上轻弹电源开关而不运行任何关闭脚​​本
  • init 6将运行/etc/init/rc.*中的所有关闭脚本,因为它会降低系统的运行级别
  • 在较新版本的Ubuntu上,reboot命令没有--force-f将运行shutdown命令,它基本上会执行与init 6
  • 相同
  • 最好养成使用init 6而不是reboot的习惯,因为它更安全,并且可以更好地交叉发行,但是重新启动已被更改为尝试并防止错误/数据,如果有人使用它。

那是对的吗?如果没有,我错过了什么?

最佳答案

使用init 6而不是reboot确实没有任何令人信服的理由,除非:

  • 由于某种原因,您错过了reboot可执行文件,
  • 您故意设法避免通知用户系统正在停机。

reboot(只要您不运行reboot --force)实际上是“更软”的关闭方式。

考虑:

  

init 6将运行/etc/init/rc.*中的所有关闭脚本,因为它会降低系统的运行级别

reboot命令没有 --force标志,只能直接重新启动系统(通过reboot系统调用)当以下两种情况之一适用时:

  • 系统处于运行级别 0(单用户模式),因此没有减少运行级别可以发生,因此不会自动运行关机脚本。
  • 系统处于运行级别6. init 6用于将系统置于运行级别6中。同样,没有任何运行init 6这样做会运行reboot命令不行。

否则,sudo reboot相当于sudo shutdown -r now。这会完成sudo init 6所做的所有好事,但也会:

  • 通知用户系统正在关闭。
  • 阻止新登录(尽管它们可能不会成功)。
  • sudo init 6更直观,更自我记录。

如果你所在的系统只有你登录,只有本地登录,使用init 6重新启动没有任何问题。如果你是这样的话喜欢重新启动,然后通过各种方式继续 - 你不会因此而伤害任何东西。但是这样做也没有客观上的优势。

init自己的文档说这不是关闭或重新启动系统的正常方法。考虑当init运行时用户(比如当你运行sudo init 6时),它实际上运行telinit(参见man init)。 telinit实际上改变了运行级别。 man telinit告诉我们:

  

通常你会使用关机(8)工具停止或重启
  系统,或将其降低到单用户模式。

作者:,Eliah Kagan

相关问答

添加新评论