06 Linux系统的关机过程和方法

文章类别 in linux

可能有些对Linux系统的关闭不以为然,觉得和Windows一样,直接关闭电源就可以了,其实这样做很不好,因为Linux后台运行着许多控制Linux对系统的各种操作进程,如果就直接关闭了的话,就可能会对系统造成进程混乱甚至数据丢失,如果对于正在高负荷工作的系统强制关闭,这样的动作是很危险的,因为这样子极有可能丢失系统里的数据,更严重的还会损坏硬件。所以我们有必要对Linux系统的关机过程有一个了解。

Linux的有关于系统关机命令常用的有这么四个:shutdowninithaltreboot。那么接下来就对其一个一个的认识。

shutdown

shutdown这个命令是用shell编写的程序,只有超级用户才可以对其进行使用。它可以安全的关闭Linux系统

当我们执行shutdown这个命令的时候,告诉你这个时候它会做一些什么事情:shutdown执行后会以广播的形式来通知所有在这个系统的用户,告诉用户系统将在指定的时间里边关闭系统,做好相应的数据保存工作。同时login指令会被禁用,当所有的用户注销了或者指定的时间到了的时候,shutdown就会发信号给init进程,然后init进程就会执行相应的运行级别。比如shutdown 指定的参数是关机命令,那么init就会执行 init 0 的运行级别。 (如果你不知道init运行级别,可以查看我上一篇文章:05 CentOS Linux的运行级别

好了,我们已经明白了它的关机过程,接下来对命令进程了解:

shutdown的详细命令是这样的:

shutdown【-fFhknrc(参数名称)】【-t 秒数】【时间】【警告信息】

参数含义如下:

  • f : 重新启动时不执行fsck(fsck是检查和修复文件的程序)
  • F : 重新启动时执行fsck
  • h : 系统关机
  • k : 发送信息给用户,但是不会真正的关机
  • n : 不调用init进程,直接由shutdown关机
  • r : 关机之后重新启动
  • c : 取消前一个关机的shutdown命令
  • t : 发送给系统用户的警告信息和关机信号的延迟时间
  • 【时间】 : 设置多少时间后执行shutdown命令,有两种,一种是hh:mm,一种是+m,如果想设置22:05的时候执行关机命就是 「shutdown 22:05」 ,而如果要5分钟后执行关机命令就是 「shutdown +5」
  • 【警告信息】 : 传送给正在登陆着的系统用户的信息。

举个例子:

10分钟后关机并且给用户警告信息:

shutdown +10 “hey,System will shutdown after 10 min”

Linux shutdown

可以看到系统发了个广播,并且告知“hey,System will shutdown after 10 min”这信息,然后还说明了将在22:07:13的时候关机。

init

这个init我们在上一篇05 CentOS Linux的运行级别1介绍过了:

关机:将init切换到0级别, 重启:将init切换到6级别。

halt

halt是最简单的关机命令了,和“shutdown -h”差不多,在执行halt的时候会终止所有的应用然后调用系统的指令sync将内存信息写入硬盘,然后停止内核,在执行half命令的时候还会检查系统的运行级别,如果是0或者6就会立即关闭系统,如果是其它的运行级别就会调用shutdown。

halt命令是这样的:

halt 【-finp(参数)】

参数含义如下:

  • f : 不管现在的系统运行级别是哪个,都不调用shutdown而直接强制关机(不建议使用)
  • i : 关机之前,关掉所有的网络的接口。
  • n : 不调用sync
  • p : 关机的时候调用poweroff(关闭电源),这是默认选项。

reboot

reboot和halt基本是一样的,不过reboot是用于关机后重启。