Answers:
通常,使用shutdown
命令。它允许在关机或重新引导之前有时间延迟和警告消息,这对于多用户外壳服务器的系统管理很重要;它可以为用户提供停机前的通知。
这样,必须像这样使用shutdown命令才能立即停止/关闭计算机(至少在Linux和FreeBSD上):
shutdown -h now
或使用提前30分钟的自定义警告重新启动它:
shutdown -r +30 "Planned software upgrades"
延迟后,shutdown
告诉init
更改为运行级别0(停止)或6(重新引导)。(请注意,省略-h
或-r
会导致系统进入单用户模式(运行级别1),这会杀死大多数系统进程,但实际上并没有停止系统;它仍然允许管理员以root用户身份登录。)
一旦系统进程被杀死并且文件系统被卸载,系统将停止/关闭电源或自动重启。这是使用halt
或reboot
命令完成的,该命令将更改同步到磁盘,然后执行实际的停止/关闭电源或重新引导。
在Linux上,如果在系统尚未启动关闭进程的情况下运行halt
或reboot
,则它将shutdown
自动调用该命令,而不是直接执行其预期的操作。但是,在FreeBSD之类的系统上,这些命令首先登录该操作wtmp
,然后将自己立即执行暂停/重新引导,而无需先终止进程或卸载文件系统。
halt
,reboot
和shutdown
彼此调用的程序。这里只有一个程序,有很多命令行解析器,它们在内部汇入一个代码路径。也没有运行级别。关机也不会进入单用户模式。实际上,单用户模式本身已被重命名。有关详细信息,请参见unix.stackexchange.com/a/196014/5132。
在20世纪80年代,BSD系统有halt
,reboot
和shutdown
。System 5 UNIX具有BSD兼容性工具集。但是它本来就有它自己的,不同的shutdown
命令。没有halt
或根本没有reboot
。(某些System 5变体具有SCO XENIX的东西haltsys
。)
BSD halt
和reboot
命令是低级的,激烈的和即时的。关闭BSD系统的审慎方法是执行该shutdown
命令,该命令完成了人们期望发生的所有事情:wall
发给用户的消息,正常终止的服务,写入的日志条目,禁用的登录等等。
尽管BSD在很大程度上是人们所接受的智慧的发源地,即“ shutdown
执行者halt
/ reboot
”,并且谨慎使用后者。在System 5世界中,人们学到了相反的习惯,即halt
/ reboot
只是惯用的速记,仅此而已:/usr/ucb/halt
从“ BSD兼容性软件包”中获得的效果与没什么不同shutdown -h
。他们俩最终都干了init 0
。
halt
。1982-05-11。4.2BSD手册。haltsys
。2005-06-03。SCO OpenServer手册。如今,我们拥有一系列可能的系统管理工具集。尽管在1990年代清除了所有可能的AT&Tism,但BSD仍然具有其工具集。Miquel van Smoorenburg在1992年(重新)编写了Linux init
+ rc
及其相关工具,人们现在将其称为“ System 5 init”,即使它实际上不是UNIX System 5中的软件(并且不仅仅是init
)。也有systemd,新贵和NOSH,每个都有自己的实现的halt
,reboot
,fasthalt
,fastboot
,等等。
工具集也已经增长和改变。现在有一个poweroff
命令,在1980年代的操作系统中不存在,因为大多数现代机器上的中央处理单元无法控制其电源。特别是Linux工具集已经获得了BSD命令。但是,就像UNIX System 5上的BSD兼容性工具一样,它们并不是完全一样的东西,并且已大体上变得平坦。
这种扁平化给我们带来的地步,halt
并且shutdown
是大多是相同的。但是确切的细节因工具集而异,并且每个工具集的机制都略有不同。
这也给我们带来了略显尴尬位置,此指令集已经与兼容性选项,它现在允许人们给计算机系统如自相矛盾的指令变得如此妆点reboot --halt
和poweroff --reboot
,正如我在为NOSH手册页指出halt
,fasthalt
,reboot
,fastboot
,和poweroff
命令。☺
halt
,reboot
,poweroff
,telinit
,和shutdown
是所有的一个程序。它实际上是systemd自己的systemctl
程序。它具有多个命令行解析器,用于这些命令的各种命令行语法以及它自己的语法,但是在此之后,它们很大程度上在内部集中到一个代码路径中。使用halt
及其命令选项来触发操作与使用shutdown
及其命令选项来触发相同操作没有区别。
systemd不会将救援模式(这是systemd的人已将其重命名为单用户模式)视为关闭的系统状态,并且使用任何这些命令都无法达到该状态。少选项shutdown now
与相同poweroff
。
BSD在很大程度上保留了1980年代的语义。 halt
并shutdown
因此非常不以他们的工具集等价的。 halt
并且reboot
是一个单一的程序;并且仍然处于低水平,即时和激烈的状态。而shutdown
和poweroff
也是一个程序,可以完成所有体贴的工作,例如计划关闭,编写wall
消息,记录操作,禁用登录等等。
在BSD工具集中,shutdown
/ poweroff
通常会调用halt
/ reboot
来制定最终的系统状态更改。(如今通常是不正确的)得到的智慧是,“ shutdown
execs halt
/ reboot
”实际上仍然在NetBSD和OpenBSD上保持不变。但是在FreeBSD / TrueOS / DragonFlyBSD上,只有-o
使用该选项才是这种情况。这些BSD系统,既这些程序的正常颁布通过发送各种信号(最后的系统状态改变INT
,USR1
和USR2
)来处理#1。 在这些系统上init
执行所有系统状态管理。
在所有的人,选择少shutdown now
不等同于任何的halt
,reboot
或poweroff
。它转换到BSD 单用户模式,从其中一个可转变回至多用户模式。
shutdown
。 系统管理员手册。NetBSD手册页。2011-11-04。reboot
,halt
。OpenBSD手册页。2016-09-03。shutdown
。FreeBSD手册页。2016-09-21。reboot
,halt
,fastboot
,fasthalt
。FreeBSD手册页。2017年3月19日。shutdown
。 系统管理员手册。DragonFlyBSD手册页。2016-09-29。reboot
,halt
,fastboot
,fasthalt
。 系统管理员手册。DragonFlyBSD手册页。2016-09-29。在NOSH系统管理工具集,halt
,fasthalt
,poweroff
,fastpoweroff
,reboot
,和fastboot
都是一个程序。这是一个向后兼容的填充程序,通常简单地链接到shutdown
,这与收到的知识相反。该--force
选项使其链接到system-control
。
因此,此工具集中--force
的halt
命令与shutdown
命令(具有等效选项)之间没有差异(不存在),因为这组“ BSD / System 5兼容性”命令只是位于顶部的薄垫片层shutdown
。
shutdown
。nosh工具集手册页。软件。telinit, init, reboot, halt, haltsys, powercycle, poweroff, … fastboot, fasthalt, fastpowercycle, fastpoweroff, …
nosh工具集手册页。软件。像nosh一样,在新贵的系统管理工具集中,收到的BSD智慧也适用。 halt
,reboot
和poweroff
,通常都是链到的一个程序shutdown
;除非使用该--force
选项,否则它将使reboot()
系统自行调用。
因此,在此工具集中--force
,halt
命令和和shutdown
命令(具有等效选项)之间也没有差异(不存在)。同时再次,选项少shutdown now
(其中没有halt
,reboot
或者poweroff
可以结束了调用,因为他们所有的设置选项)使系统进入单用户模式,而不是将其关闭。
shutdown
(8)。Ubuntu手册页。reboot
(8),halt
(8),poweroff
(8)。Ubuntu手册页。init
+ rc
工具集同样,在此工具集中,除非收到系统已处于关机或停止“运行级别”的命令,否则,所收到的BSD知识与之相反,halt
并且reboot
仅适用于shutdown
-,在这种情况下,这些命令实际上会执行最终的系统状态更改。 shutdown
依次链接到init
。
因此,同样,两者之间没有区别(除非系统已经很大程度上关闭)halt
,shutdown
因为前者只是调用后者。是的,再次,选择少shutdown now
(其中没有halt
,reboot
或者poweroff
可以结束了调用,因为他们所有的设置选项)使系统进入单用户模式,而不是将其关闭。
在linux中,“ halt”和“ reboot”分别是shutdown命令的别名- shutdown -h
和shutdown -r
。密码关闭通常假定为-h。
aliases
shell别名的意思,但是是的,halt
基本上只是call shutdown -h
和reboot
run shutdown -r
。请注意,如果将-f
(force)选项传递给halt
或reboot
,shutdown
则不会调用。
sendmail
此时命令-像与MTA的,实际上它并不不管你使用哪种初始化系统,因为所有的人都会认识到这两个shutdown
和halt
这样。
sendmail
命令也是如此。这就像sendmail
命令,但并非您的想法。