当前位置: 首页>>技术教程>>正文


重启和init 6一样吗?

,

问题描述

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

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

N 2

看着 man reboot 我看到:

\\n

When called with –force or when in runlevel 0 or 6, this tool invokes the reboot(2) system call itself and directly reboots the system. Otherwise this simply invokes the shutdown(8) tool with the appropriate arguments.

\\n

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

\\n

shutdown arranges for the system to be brought down in a safe way. All logged-in users are notified that the system is going down and, within the last five minutes of TIME, new logins are prevented.

\\n

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

  • 在其他发行版和可能较旧的发行版上,reboot 只会卸载磁盘并基本上轻按电源开关而不运行任何关闭脚​​本

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

  • 在较新版本的 Ubuntu 上,不带 --force-freboot 命令将运行关机命令,该命令基本上与 init 6 做同样的事情

  • 养成使用 init 6 而不是 reboot 的习惯可能会更好,因为它更安全并且会更好地工作 cross-distro,但 reboot 的默认行为已更改,以尝试防止有人使用它时出现错误/数据丢失。

这对吗?如果没有,我错过了什么?

最佳回答

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

  • 由于某种原因,您缺少 reboot 可执行文件,或者

  • 您故意试图避免通知用户系统正在关闭。

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

考虑:

\\n

init 6 will run all of the shutdown scripts in /etc/init/rc.* as it reduces system’s runlevel

\\n

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

  • 系统处于 runlevel 0(单用户模式),因此不会降低运行级别,因此不会自动运行关闭脚本。

  • 系统处于运行级别 6。init 6 的作用是将系统置于运行级别 6 中。同样,运行 init 6 不会做任何运行 reboot 命令不会做的事情。

否则, sudo reboot 等效于 sudo shutdown -r now 。这完成了 sudo init 6 所做的所有好事,而且:

  • 通知用户系统正在关闭。

  • 阻止新的登录(尽管它们可能无论如何都不会成功)。

  • sudo init 6 更直观且 self-documenting 。

如果您在一个只有您登录且只有本地登录的系统上,则使用 init 6 重新启动没有任何问题。如果这就是您更喜欢重新启动的方式,那么无论如何,请继续 – 您这样做不会伤害任何东西。但是,这样做在客观上也没有什么可取的。

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

\\n

Normally you would use the shutdown(8) tool to halt or reboot\\n the system, or to bring it down to single-user mode.

\\n

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13133.html,未经允许,请勿转载。