Linux各种关机命令工作过程详解

常用的Linux关机命令有init、shutdown、halt和reboot等,这些命令都可以达到关机重启的目的,但是每个命令的内部工作过程是不同的。

1.shutdown命令

       使用shutdown命令可以安全地关闭Linux系统。有些人会使用直接关闭电源的方法来关闭Linux,这是十分危险的。因为

在Linux后台运行着很多进程,这些进程控制着Linux对系统的各种操作,如果强制关机,可能会造成进程的混乱以至丢失数据。如果在系统工作负荷很高的情况下突然断电,不仅会丢失数据,甚至还会损坏硬件设备。

       shutdown命令是用shell编写的程序,必须由超级用户才能执行。shutdown命令执行后,会以广播的形式通知正在系统中工作的所有用户,系统将在指定的时间内关闭。请保存文件,停止作业,注销用户。此时 login 指令被冻结,新的用户不能登录。当所有用户从系统中注销或者指定时间已到时,shutdown就发送信号给init程序,要求init程序改变系统运行级别。接着,init程序根据shutdown指令传递过来的参数,相应地改变运行级别。例如,如果shutdown指定的参数是关机命令,init程序就执行init 0进行关机;如果shutdown指定的参数要重启系统,init程序就执行init 6进行系统重启。

1.1 shutdown命令语法

shutdown [-afFhknrc(参数名称)] [-t 秒数] 时间 [警告信息]

-a 使用 /etc/shutdown.allow 来验证身份
-f 重新启动时不执行fsck
-F重新启动时执行fsck 重新启动时执行fsck
-h 将系统关机,在某种程度上功能与halt命令相当
-k 只是发送信息给所有用户,但并不会真正关机
-n 不调用init程序关机,而是由shutdown自己进行(一般关机程序是由shutdown调用init来实现关机动作的),使用此参数将加快关机速度,但不太建议使用)
-r 关机之后重新启动系统
-c 取消前一个shutdown命令
-t<秒数> 发送警告信息和关机信号之间要延迟多少秒。警告信息将提醒用户保存当前进行的工作
[时间] 设置多久时间后执行shutdown命令。时间参数有hh︰mm或+m两种模式
[警告信息] 要传送给所有登录用户的信息

1.2 应用举例

[root@CentOS ~]# shutdown -r now        #立即关机重启
[root@CentOS ~]# shutdown -h            #立即关机   
[root@CentOS ~]# shutdown  +5  "System  will  shutdown  after  5  minutes"   #设定5分钟后 
                                                                              关机,同时发出 
                                                                              警告信息给登录 
                                                                              的Linux用户

2.halt命令

        halt是最简单的关机命令,相当于“shutdown –h”组合。执行halt时,将终止所有应用程序,然后调用系统指令sync。sync将所有内存信息通过文件系统写入硬盘,然后停止内核

2.1 halt命令语法

halt [-findwp]

-f

不管当前系统处于何种运行级别,都不调用shutdown而强制关机
-i 关机之前,关掉所有的网络接口
-n halt执行时,不调用系统指令sync
-d 不记录此次关机情况(当使用 -n 参数时隐含 -d)
-w 不真正重启或关机,而仅仅将关机信息写入/var/logwtmp文件里
-p 关机时调用poweroff,也就是关机的同时关闭电源(此选项为默认选项)

2.2 应用举例

[root@CentOS ~]# halt -p        #关闭系统并关闭电源
[root@CentOS ~]# halt -d        #关闭系统,但不留下纪录

3.reboot命令

        reboot命令的执行过程与halt基本类似,不同的是halt用于关机,而reboot用于关机后系统重启

4.init命令

        init程序主要用于系统不同运行级之间的切换,切换的工作是立即完成的。例如,init 0就是将系统运行级切换到0,也就是关机;init 6命令用于将系统运行级别切换到6,也就是重启系统

猜你喜欢

转载自blog.csdn.net/weixin_43265596/article/details/86098920
今日推荐