常用的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,也就是重启系统