重启与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我看到:

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

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

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

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

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

  • 由于某种原因,您缺少reboot可执行文件,
  • 您故意试图避免通知用户系统正在关闭。

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

考虑:

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

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

  • 系统处于运行级别 0(单用户模式),因此不会发生可能发生的运行级别的减少,因此不会自动运行关闭脚本。
  • 系统处于运行级别6. 什么init 6将系统置于运行级别6.再次,没有任何正在运行的init 6将执行运行reboot命令的操作。

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

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

如果您所在的系统只有您登录,并且只有本地登录, 则使用init 6重新启动没有任何问题。 如果您更喜欢重新启动,那么请务必继续 – 这样做不会伤害任何事情。 但是这样做也没有客观上的优势。

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

通常,您将使用shutdown (8)工具暂停或重新引导系统,或将其降至单用户模式。