Linux关闭和重启的命令
linux查看目录命令概要:Linux中常用的关机和重启命令有shutdown、init、halt、reboot、poweroff和telinit,它们都可以达到关机和重新启动的目的,但是每个命令的内部工作过程是不同的,下面将逐一进行介绍。
本文以CentOS5.4 Linux为测试操作系统,所有示例均来自测试系统。文中所述内容适用于Redhat Linux,但并不适用于所有版本的Linux。
1.各个命令之间的关系
shutdown、init、halt、reboot、poweroff和telinit命令都存在于/sbin目录下,我们使用“ls -l”命令查看一下各个命令之间的关系。如图1。
图1 各个命令之间的关系
从图1中我们可以知道,各个命令之间并不都是相互独立的,poweroff和reboot是halt的符号链接,telinit是init的符号链接。
2.shutdown命令
语法:shutdown [-krhfnc] [-t secs] time [warning message]
只有root用户才有权限执行此命令,因为用户执行shutdown命令时,shutdown会调用getuid判断是否为root用户,如果为普通用户,则会退出。
有些用户会使用直接断掉电源的方式来关闭Linux,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关闭机器可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至会损坏硬件设备。
shutdown命令用于安全关闭Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。
从语法中,我们可以看到time选项不可以省略。time选项用于设置多久时间后执行shutdown命令。time选项的值有hh:mm或+m两种模式。hh:mm格式表示在几点几分执行shutdown命令。例如“shutdown 10:45”表示将在10:45执行shutdown。+m表示m分钟后执行shutdown。比较特别的用法是以now表示立即执行shutdown,即命令“shutdown now”表示立即执行shutdown。
这里有一点需要我们注意:运行“shutdown time”命令而不加任何参数的话,并不会使系统真正的关机,而是使系统进入到了单用户操作模式(即运行级1)下了。
shutdown命令的工作实质是给init进程发送信号(signal),要求它切换系统的运行级(runlevel)。系统的运行级包括:
# 0:关闭系统
# 1:单用户模式,如果没有为shutdown命令指定-h或-r参数而直接执行,则默认将切换到此运行级别
# 2:多用户模式(不支持NFS)
# 3:多用户模式(支持NFS),一般常用此种运行级别
# 5:多用户模式(GUI模式)
# 6:重新启动系统
shutdown命令各个参数[-krhfnc] [-t secs]的功能如下:
-c 取消前一个shutdown命令。值得注意的是:当我们执行如“shutdown -h +10”命令时,只要按“Ctrl+C”键就可以中断关机的命令。若是
执行如命令“shutdown -h +10 & ”将 shutdown操作转到后台时,则
需要使用“shutdown -c”将前一个shutdown命令取消。
-f 重启时忽略检测文件系统。
-t <;秒数> 送出警告信息后延迟指定的秒数,再执行shutdown命令。
-r 重启系统。
-k 并不真正关机,只是给每个登录用户发送警告信号。
-h 关闭系统(halt)。
-
n 不调用init程序关机,而是由shutdown自己进行。使用此参数将加快关机速度,但是不建议用户使用此种关机方式。
另外选项“[warning message]”可有可无,它用来指定发送给用户的消息。
实例1:运行“shutdown -r +10”命令,然后使用“Ctrl+C”键中断重启操作。如图2所示。
图2 执行shutdown命令后再取下shutdown
图中,当执行了shutdown命令后,终端上显示出警告信息,并且终端不再处于等待输入命令的状态。这时,我们按下“Ctrl+C”键即可中断重启操作。
示例2:运行“shutdown -h +10 &”命令,即将shutdown操作转到后台运行,然后使用“shutdown -c”命令取消关机。如图3和图4所示。
图3 将shutdown操作转到后台运行后再取消shutdown
图4 执行图3中所示的两个命令时系统发给mrajian用户的警告信息
3.halt命令
语法:halt | fasthalt [-ifwnpd]
halt会先检测系统的runlevel。若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。
halt是最简单的关机命令。halt执行时,杀死应用进程,执行sync(将存于buffer中的资料强制写入硬盘中)系统调用,文件系统写操作完成后就会停止内核。halt 命令使用 syslogd 命令记录关机,且将一个关机记录放在/var/adm/wtmp 登录记帐文件中。系统也将一个条目写入错误记录里,声明系统已关机。
halt命令的部分参数如下:
-n 禁止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超级块(superblock)覆盖修补过的超级块。
-f 没有调用shutdown而强制关机或重启,不建议使用
-i 关机或重启之前,关掉所有的网络接口
-p 当关机的时候顺便做关闭电源的动作。此选项为缺省选项
-w 并不是真正的重启或关机﹐只是写wtmp(/var/log/wtmp)纪录
d 关闭系统,但不留下纪录。
4.init命令
语法:inti runlevel
init进程是所有进程的父进程,其进程号始终为1。init命令用于切换系统的运行级别,切换的工作是立即完成的。
init runlevel(runlevel是系统运行级,取值范围为0-6)命令用于将系统从当前运行级切换到运行级runlevel。因此,init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别换为6,即重新启动。
reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。
示例:
[root@localhost ~]# reboot#重启
[root@localhost ~]# reboot -w#做个重开机的模拟
另外还有poweroff和telinit命令,这里就不再详细介绍了。
编者注:写了这么多东西,不知道质量如何,希望和大家多多交流共同进步,我还是一个Linux的初学者,难免很多谬误,希望高手赐教指正,以期不断进步。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论