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
4
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 的初学者,难免很多谬误,希望高手赐教指正,以期不断进步。
Logo

更多推荐