重启和 init 6 一样吗?

重启和 init 6 一样吗?

重启是否与 ubuntu 的 init 6 相同?

我在 Amazon EC2 上运行 Ubuntu 12.04。当我通过 ssh 进入该框时,我可以输入runlevel并得到:

N 2

看看man reboot我看到的:

当使用 --force 或处于运行级别 0 或 6 时,此工具会自行调用 reboot(2) 系统调用并直接重新启动系统。否则,它只会使用适当的参数调用 shutdown(8) 工具。

如果我读的话,man shutdown 8我会看到:

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

reboot我对和之间的区别的基本理解init 6是:

  • 在其他发行版或更老的发行版上,reboot只需卸载磁盘并按下电源开关,而无需运行任何关机脚本
  • init 6将运行所有关机脚本,因为/etc/init/rc.*它会降低系统的运行级别
  • 在较新版本的 Ubuntu 中,reboot不带--force或的命令-f将运行关机命令,该命令基本上与init 6
  • 最好养成使用 的习惯,init 6因为reboot它更安全并且可以更好地跨发行版运行,但是 的默认行为reboot已被更改,以尝试防止有人使用它时出现错误/数据丢失。

是这样吗?如果不对,我遗漏了什么?

答案1

确实没有任何令人信服的理由使用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)工具用于停止或重新启动系统,或将其置于单用户模式。

相关内容