重启与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的最后五分钟内,将阻止新的登录。
我对reboot
和init 6
之间区别的基本了解是:
- 在其他发行版和可能较旧的发行版
reboot
只会卸载磁盘并基本上轻弹电源开关而不运行任何关闭脚本 -
init 6
将运行/etc/init/rc.*
所有关闭脚本,因为它会降低系统的运行级别 - 在较新版本的Ubuntu上,没有
--force
或-f
的reboot
命令将运行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)工具暂停或重新引导系统,或将其降至单用户模式。