restart 、 init 6 和 shutdown -r now 之间有什么区别?

restart 、 init 6 和 shutdown -r now 之间有什么区别?

我只是想知道之间的区别

  • reboot
  • init 6
  • shutdown -r now

哪个是最安全、最好的?

答案1

它们没有区别。在内部,他们做完全相同的事情:

  • reboot使用shutdown命令(带有 -r 开关)。 shutdown 命令用于终止所有正在运行的进程,卸载所有文件系统,最后告诉内核发出 ACPI 电源命令。来源可以是在这里找到。在较旧的发行版中,reboot 命令通过发出信号来强制进程退出SIGKILL(仍然可以在源中找到,可以使用-f选项调用),在最近的发行版中,它默认为更优雅且初始化友好的init 1 -> shutdown -r。这可以确保守护进程在关闭之前自行清理。

  • init 6告诉init进程关闭 init 文件中写入的所有生成的进程/守护进程(按照它们启动的相反顺序),最后调用shutdown -r now命令重新启动机器

如今,没有太大区别,因为两个命令的作用完全相同,并且它们通过调用关闭脚本来尊重用于启动服务/守护程序的初始化脚本。除reboot -f -r now下述情况外

联机帮助页中有一个关于为什么不安全的小解释reboot -f

  -f,--强制
    强制立即停止、断电、重新启动。不要联系init系统。

编辑:

忘了提及,在即将推出的 RHEL 发行版中,您应该使用新systemctl命令来发出关机/重启命令。正如reboot和的联机帮助页中所述shutdown,它们是“仅用于兼容性的遗留命令”。并且该systemctl方法将是唯一安全的方法。

答案2

关闭是更好的选择,因为它允许您指定原因采取激烈的行动——你应该一直做的事情。该消息将被记录在日志中以供后代使用。例如:

shutdown -r now 'Kernel upgrade requires reboot'

您还可以执行预定的重新启动——通过指定now重新启动时间以外的其他内容:

shutdown -r 22:00 'Work around kernel memory leak'

然后,随着时间的临近,您的用户将得到定期的提醒——这个过程将更加有序和专业。

答案3

reboot在 FreeBSD 上,和之间存在差异shutdown -r now。从reboot手册页:

通常,当系统需要停止或重新启动时,会使用 shutdown(8) 实用程序,提前警告用户即将发生的厄运并彻底终止特定程序。

答案4

在传统的unices上,rebootshutdown -r now是截然不同的命令。在典型使用情况下,reboot仅在单用户模式下安全使用。

shutdown -r now是跨不同 *nix 关闭的规范方法,一般使用起来更安全,并且在功能上等同于init 6.

初始化(8) 重新启动(8)

相关内容