admin管理员组

文章数量:1530987

2024年3月1日发(作者:)

Linux 关闭和重启的命令 Edit By mrajian

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系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。

1

Linux 关闭和重启的命令 Edit By mrajian

从语法中,我们可以看到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

Linux 关闭和重启的命令 Edit By mrajian

图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 登录记帐文件中。系统也将一个条目写入错误记录里,声明系统已关机。

3

Linux 关闭和重启的命令 Edit By mrajian

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,即重新启动。

5. reboot命令

reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。

示例:

[root@localhost ~]# reboot

[root@localhost ~]# reboot -w

#重启

#做个重开机的模拟

另外还有poweroff和telinit命令,这里就不再详细介绍了。

编者注:写了这么多东西,不知道质量如何,希望和大家多多交流共同进步,我还是一个Linux的初学者,难免很多谬误,希望高手赐教指正,以期不断进步。

4

本文标签: 命令系统运行用户关机