因为Unix/Liunx采用异步写和延迟写机制,大部分数据操作在缓冲区进行,并没有实时的写入设备,如果强行关机会导致数据丢失,严重者可造成系统的瘫痪。因此,在切断电源之前必须先关闭系统,绝不能断电了事。LIinux系统的关闭可以在字符或图形界面下进行。(以下为字符界面)
在字符界面下常用的关机/重启命名有shutdown,halt,reboot,poweroff和init,它们都可以达到关闭系统的目的,但每个命令的工作过程不同。
1.halt命令
Halt命令的功能是关闭系统,在执行的过程中,终止所有应用和系统进程,将所有数据写入存储介质,最后关闭系统。其常用方法为:
halt [-f] [-p]
参数-f用于不掉用shutdown而强制快速关系或重启;-p用于在关闭系统时关闭电源.
一般情况下,使用-p参数在关闭系统后,会自动关闭电源。如果计算机不这样做,在看到“System halted。”消息后,可以手动切断电源。其实halt就是调用shutdown -h。Halt执行时,杀死应用进程,执行sync系统调用,文件系统写操作完成后就会停止内核。
2.reboot命令
Reboot命令的工作过程与halt命令差不多,但它在关闭系统时会重新启动。
3.poweroff命令
poweroff命令等同于halt -p,关闭系统的同时关掉电源。
4.init和telinit命令
系统内运行一个init进程,它负责系统的初始化和运行级别的切换。Telinit和init命令的作用时告诉init进程做运行级别的切换,它的用法为:
init runlevel
telinit runlevel
Linux/Unix有7个运行级或运行状态,定义如下
(1)0:关闭系统。
(2)1:关闭单系统模式
(3)2:多用户模式
(4)3:完全多用户模式
(5)4:没有使用,用户可自定义。
(6)5:完全多用户模式,并且支持X-Window(默认运行级)。
(7)6:重新启动
Init 命令的使用示例:
#init 0 #关机 (只有只有root用户才有操作权限)
5.shutdown命令
Shutdown命令可以安全地关闭系统,在执行系统关闭与命令发出之间可以指定一个时间延迟,以供用户做准备并从容退出。使用shutdown命令时,将在关机前向系统内的所以用户发送或警告消息,告诉系统发生了什么及如何处理。其用法为:
shutdown [-krhfFc] time [warn_msg]
参数说明
shutdown命令部分参数如表所示
例如:
# shutdown -r now #立刻重新启动
#shutdown -h now
#shutdown -k now “HELLO” #发出警告信息,但没有真的关机
#shutdown -h 10:42 ‘10:42将关闭系统,请届时退出 ’ #10:42关机
#shutdown -r +20 ‘ 20min后将重启系统,请届时退出’ #20分钟后重启
#shutdown -c #撤销已到达的shutdown命令。注意,必须在其他终端才能使用此命令
#shutdown now #切换至单用户模式(不加任何选项时)