最常用的Linux关机命令用init、shutdown、halt和reboot等。这些命令都可以达到关机重启的目的,但是每个命令的内部工作过程是不同的。下面就详细了解Linux安全关机的过程。
使用shutdown命令可以安全地关闭Linux系统,有些Linux初学者会使用直接关闭电源的方式来关闭Linux,真是十分危险的,因为Linux与Windows不同,在Linux后台运行着很多进程,这些进程控制着Linux对系统的各种操作,如果强制关机,可能会造成进程的混乱以致丢失数据。如果在系统工作负荷很高的情况下突然断电,不但会丢失数据,甚至会损坏硬件设备。
shutdown命令是用shell编写的程序,必须由超级用户才能执行。shutdown命令执行后,会以广播的形式通知正在系统中工作的所有用户,系统将在指定的时间内关闭。请保存文件,停止作业,注销用户。此时login指令被冻结,新的用户不能登录。当所有的用户从系统中注销或者指定时间已到时,shutdown就发送信号给init程序,要求init程序改变系统运行级别。接着,init程序根据shutdown指令传递过来的参数,相应地改变运行级。例如,shutdown指定的参数是关机命令的话,init程序就执行init 0进行关机;如果shutdown指定的参数是要重启系统,init程序就执行init 6进行系统重启。
shutdown [-fFhknc(参数名称)] [-t秒数] 时间 [警告信息]
各参数含义如下。
要立即关机重启:shutdown -r now
要立即关机: shutdown -h now
设定5分钟后关机,同时发出警告信息给登录用户:shutdown +5 "System will shutdown after 5 minutes"
halt是最简单的关机命令,相当于“shutdown -h”组合。halt 执行时,将杀死所有应用程序,然后调用系统指令sync。sync将所有内存信息通过文件系统写入硬盘,然后停止内核。
halt语法格式如下:
halt [-finp]
halt指令在执行时,会首先检测系统的运行级别,如果运行级为0或6,则立即关闭系统,否则调用shutdown来关闭系统。参数含义如下:
reboot命令的执行过程与halt基本类似,不同的是halt是用于关机,而reboot是关机后引发系统重启。
init进程是所有进程的鼻祖,其进程号始终为1。init程序主要用于系统不用运行级之间的切换,切换的工作室立即完成的。
例如,init 0就是将系统运行级切换到0,也就是关机;init 6命令用于将系统运行级切换到6,也就是重启系统。