重新启动与init 6一样吗?


22

重新启动与ubuntu的init 6相同吗?

我在Amazon EC2上运行Ubuntu 12.04。将ssh'放入框中时,我可以输入以下内容runlevel

N 2

看着man reboot我看到:

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

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

关闭可以安全地关闭系统。系统将通知所有已登录的用户系统正在关闭,并且在TIME的最后五分钟内,将阻止新的登录。

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

  • 在其他发行版(也许是较旧的发行版)上reboot,它们只会卸载磁盘并基本上轻按电源开关,而无需运行任何关闭脚​​本
  • init 6将以/etc/init/rc.*降低系统的运行级别运行所有关闭脚本
  • 在较新版本的Ubuntu上,reboot不带--force-f将运行shutdown命令的命令基本上会执行与init 6
  • 最好养成使用init 6而不是的习惯,reboot因为这样做比较安全,并且可以更好地跨发行版,但是reboot已更改的默认行为,以尝试防止有人使用它的错误/数据丢失。

那是对的吗?如果没有,我想念什么?

Answers:


23

确实没有任何令人信服的理由来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告诉我们:

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


我有Alienware X51 Dell PC,已在其中安装Ubuntu 13.04和3.11内核。当我执行$ init 6时,它会重新启动,有时BIOS会永远显示。是因为我使用的是init 6而不是重新启动命令吗?

1
@YumYumYum我不明白为什么使用init 6会导致这种情况。当您使用reboot而不是时init 6,它是否总是可以通过BIOS?
伊莱亚·卡根

1
我已将BIOS固件从A00更新为A02,此后我的重启或init 6均正常工作,因此似乎是BIOS问题。谢谢。

reboot有时仅在单用户和本地登录的Ubuntu Server 14.02上停止运行。我之后经常做sync一个安全reboot -f吗?
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.