重启是否与 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)工具用于停止或重新启动系统,或将其置于单用户模式。