我只是想知道之间的区别
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) 实用程序,提前警告用户即将发生的厄运并彻底终止特定程序。