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。如systemctl
和reboot
的联机帮助页所述,它们是“仅可用于兼容性的旧版命令”。而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上,reboot
和shutdown -r now
是截然不同的命令。在典型用法下,reboot
仅在单用户模式下可以安全使用。shutdown -r now
是在不同* nix上关闭的规范方法,通常更安全使用,并且在功能上等效于init 6
。init(8)
重新启动(8)
#4 楼
在FreeBSD上,reboot
和shutdown -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
评论
这三个命令的确切行为因操作系统而异。