前往顾页
以后地位: 主页 > 精通Office > Ubuntu教程 >

Linux体系中关机号令详细剖析

时候:2013-05-14 22:48来源:知行网www.zhixing123.cn 编辑:麦田守望者

在Linux体系中,其关机号令就多达六种。别离有shutdown、reboot、halt、poweroff、telinit、init等号令,固然有些号令相互之间是父子的关系。这些号令都可以到达关机或从头启动体系的目标,但每个号令的外部事情过程是不合的,下面介绍的就是这些关机号令的特性和在甚么环境下应当采取甚么号令。
在这六个号令中,有些号令之间是父子关系。如halt与poweroff两个之间就是父子关系。在halt号令中,如果插手-p参数的话,则其起到的感化就跟poweroff是不异的。如果体系办理员要晓得某个关机号令是不是是其他关头号令的连接(即与别的关机号令是不是有父子关系),可以操纵以下号令进行查询:
ls -l /sbin/poweroff
ls -l /sbin/halt

1.shutdown
因为Linux体系是一个多用户体系。在同一个时候内可能有多个用户登录在这个体系上。如经由过程SSH号令进行长途登录等等。那么体系办理员可能希望在封闭Linux体系之前给以后所有的登任命户发出警告。或说在十分钟后封闭体系等等。如果体系办理员要实现这个服从,就需求采取shutdown这个关机号令。
shutdown 号令可以宁静地封闭或重启Linux体系。这个号令会在体系封闭之前给体系上的所有登任命户(包含长途登录的用户)提示一条警告信息。该号令还许可体系办理员指定一个时候参数,在规定的时候后封闭体系。如可所以一个切确的时候(几时几分),也能够是从现在开端的一个时候段(十分钟后)。操纵这个号令体系所有过程都将领遭到 SIGTERM旌旗灯号,可使vi等文本编辑法度偶然候将处于编辑状况的文件进行存储。邮件和消息等利用法度过程则可以将所有缓冲池内的数据进行恰当的断根等等。体系办理员运行shutdown号令后,体系会告诉init过程,请求它改换运行级别来实现特定的服从。运行级别0用来封闭体系,运行级别6用来重启体系,运行级别1用来使体系进入履行体系办理任务状况。如果没有给出 -h 或 -r 参数时,这是shutdown号令的默许事情状况。体系履行该号令后,会主动进行数据同步的事情。故这个号令的所破钞的时候可能要久一点。
  这里提到了一个运行级别的观点,它也是Linux体系与Windows体系差别比较年夜的一个点。所谓运行级别是一种体系软件环境建设。在某个特定的环境中只许可某一组选定的过程存在。init 给不合的运行级别派生的过程。Init可以启动到8个不合的运行级别上,包含0-6运行级别和S或s运行级别。运行级别可以由超等用户经由过程telinit号令来转换。此号令可以将转换旌旗灯号通报给init,奉告它切换到哪个运行级别。运行级别0,1,和 6为体系保存的公用运行级别。运行级别0用来关机,运行级别6用来重启,运行级别1用来使计较机进入单用户形式。运行级别S不是给我们直接利用的,更多是为进入运行级别1时运行某些可履行脚本时被调用。
shutdown履行它的事情是送旌旗灯号〔signal〕给init法度,请求它改变runlevel。Runlevel 0被用来停机〔halt〕,runlevel 6是用来从头激活〔reboot〕体系,而runlevel 1则是被用来让体系进入办理事情可以进行的状况;这是预设的,假定没有-h也没有-r参数给shutdown。要想体味在停机〔halt〕或从头开机〔reboot〕过程中做了哪些行动,可以在这个文件/etc/inittab里看到这些runlevels相关的质料。

shutdown 参数申明:
   [-t] 在改变到别的runlevel之前,奉告init多久今后关机。
   [-r] 重启计较器。
   [-k] 其实不真正关机,只是送警告旌旗灯号给每位登录者〔login〕。
   [-h] 关机后封闭电源〔halt〕。
   [-n] 不消init,而是本身来关机。不鼓动鼓励利用这个选项,并且该选项所产生的后果常常不老是你所预期获得的。
   [-c] cancel current process打消目前正在履行的关机法度。所以这个选项当然没偶然候参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位利用者。
   [-f] 在重启计较器〔reboot〕时忽视fsck。
[-F] 在重启计较器〔reboot〕时逼迫fsck。
   [-time] 设定关机〔shutdown〕前的时候。     

2.halt—-最简朴的关机号令
-n参数,它首要用来避免sync体系调用。Linux体系中有的时候会了进步效力,会把欲写入硬盘的质料先写到 filesystem buffer 中。这个 buffer 是一块内存中的空间。如果欲写入硬盘的质料存于这个buffer中,而体系又俄然断电的话,那么质料就会丧失。sync指令会将存于buffer 中的质料强迫写入硬盘中。这个服从就仿佛数据库中的高速缓存一样。可以先把变动的数据写入到内存的一个高速缓存中。然后比及某个特定的时候再把它写入到硬盘中。这类体例可以进步体系机能。不过有的时候办理员需求避免体系采纳sync指令。如体系办理员用fsck号令修补分区以后,为了不内核用老版本的超等块覆盖修补过的超等块,在关机时就要采取halt –n这个情势来关机,如许在关机的时候不会用老版本的超等块覆盖修补过的超等块。
  如果在halt号令中带了-w参数的话,则其实不是实在的重启或关机。而只是把这个事件记入到wtmp日记文件中。在体系登录时,login登录法度会将一些内容写入到utmp文件中,同时也将其添写到wtmp日记文件中。刊出时,init过程将utmp文件中呼应的记录擦除,每个字节都填以0。并将一个新的记录添写到wtmp文件中。在体系从头启动时,和变动体系时候和日期的前后,都在wtmp文件中添写特别的记录项。也就是说,wtmp日记文件跟踪各个登录和刊出事件,和其他一些特别的变动。如果体系办理员其实不是要实在的关机,而只是想把某个标识表记标帜写入到wtmp日记文件中,则可以操纵这个halt –w号令来完成这个需求。别的,-d是跟-w相反的参数。如果在关机时插手这个参数的话,则关机时不会往wtmp日记文件中插手内容。
操纵这个号令,偶然候还可以实现节电服从。如在条记本电脑中,节电形式凡是有四种。一是Doze形式,当设定时候一到,CPU时钟变慢,其他装备还是运作。二是Standby形式,当设定时候一到,硬盘和显现将停止事情,其他装备还是运作。三是Suspend形式,当设定时候一到,除CPU以外的所有装备都将停止事情。四是HDD Power Down形式:当设定时候一到,硬盘停止事情,其他装备还是运作。而在Linux操纵体系下,他支撑的时第二种形式,即Standby形式。如果体系办理员运行halt -h号令,则就是高速Linux操纵体系的硬盘处于Standby形式,以节流电。
  别的参数-p是这个号令的缺省选项。如果采取这个参数,则这个号令同poweroff号令就完整不异了。
  需求重视的是,利用halt号令的话,有效户的限定。也就是说,体系在剖析号令行参数后,会调用geteuid体系过程判定以后用户是不是为root用户。如果是的话进行后续的操纵;如果为浅显用户,halt加入,并且会向用户提示错误信息。
  其实halt就是调用shutdown -h。halt履行时,杀死利用过程,履行sync体系调用,文件体系写操纵完成后就会停止内核。

参数申明:
   [-n] 避免sync体系调用,它用在用fsck修补根分区以后,以禁止内核用老版本的超等块〔superblock〕覆盖修补过的超等块。
   [-w] 其实不是实在的重启或关机,只是写wtmp〔/var/log/wtmp〕记载。
   [-d] 不写wtmp记载〔已包含在选项[-n]中〕。
   [-f] 没有调用shutdown而强迫关机或重启。
   [-i] 关机〔或重启〕前,关失落所有的收集接口。
   [-p] 该选项为缺省选项。就是关机时调用poweroff。  

3.reboot

reboot的事情过程差不多跟halt一样,不过它是激发主机重启,而halt是关机。它的参数与halt相差不多。

4.init

init是所有过程的先人,它的过程号始终为1,所以发送TERM旌旗灯号给init会停止所有的用户过程、保护过程等。shutdown 就是利用这类机制。init定义了8个运行级别(runlevel),init 0为关机,init 1为重启。关于init可以长篇年夜论,这里就不再论述。别的另有telinit号令可以改变init的运行级别,比如,telinit -iS可使体系进入单用户形式,并且得不到利用shutdown时的信息和等候时候。

------分开线----------------------------
标签(Tag):Ubuntu Linux 操纵体系 Unix Android fedora debian
------分开线----------------------------
保举内容
猜你感兴趣