我只想了解



reboot
init 6
shutdown -r now

和最安全的区别最好吗?

评论

这三个命令的确切行为因操作系统而异。

#1 楼

它们没有区别。在内部,它们执行完全相同的操作:


reboot使用shutdown命令(带有-r开关)。 shutdown命令用于终止所有正在运行的进程,卸载所有文件系统,最后告诉内核发出ACPI power命令。可以在此处找到源。
在较早的发行版中,重新启动命令通过发出SIGKILL信号(仍在源中找到,可以使用-f选项调用)来强制退出进程,在最新发行版中,默认为更优雅,更友好的初始化。这样可以确保守护程序在关闭之前自行清理。
init 1 -> shutdown -r告诉init 6进程关闭init文件中写入的所有生成的进程/守护程序(按它们启动的相反顺序),最后调用init命令重新启动机器

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

从手册页中对为什么reboot -f -r now不安全的原因进行了少量解释:

  -f, --force
    Force immediate halt, power-off, reboot. Don't contact the init system.


编辑:

忘了提及,在即将发布的RHEL发行版中,您应该使用新的reboot -f命令来发出poweroff / reboot。如systemctlreboot的联机帮助页所述,它们是“仅可用于兼容性的旧版命令”。而shutdown方法将是唯一安全的方法。

评论


有时我的重启挂在SIGTERM上,是否有办法知道原因,并且有使超时超时的方法,例如,如果花费的时间太长,它将强制重启?

– CMCDragonkai
2014年5月28日下午2:35

这些RHEL版本不再“即将推出”。 ☺如unix.stackexchange.com/a/196014/5132所述,在这种系统化操作系统上完全没有区别。他们甚至都不是不同的程序。

– JdeBP
15年4月13日在19:27

您是否通过说出init 1-> shutdown -r来打错字?

–deed02392
17年5月1日下午14:20

您的链接已损坏。

–谁知道
19年2月1日在18:03

#2 楼

关机是可取的,因为它允许您指定采取剧烈动作的原因-您应该始终这样做。该消息将被记录在日志中以供后代使用。例如:

shutdown -r now 'Kernel upgrade requires reboot'

还可以执行计划的重新引导-通过将now以外的其他内容指定为重新引导时间:

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

然后,您的用户将随着时间的流逝而得到定期提醒,以使他们走出大门-过程将更加有序和专业。

#3 楼

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

shutdown -r now是在不同* nix上关闭的规范方法,通常更安全使用,并且在功能上等效于init 6

init(8)
重新启动(8)

#4 楼

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


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


评论


但是,这不是BSD问题,这是由该问题上的标记以及其中一个命令中使用System 5运行级别所证明的。 ☺

– JdeBP
15年4月14日在9:51

我知道这是一个Linux问题。我想知道有人会发现在其他系统上有所不同是有用的。

–MariánČerný
17年1月4日在9:24

我来这里是为了寻找BSD的答案,很高兴在这里看到它,即使BSD不是Linux。

–YetAnotherRandomUser
20-2-5在1:11