跳到主要内容

Linux 运行级别

Linux 系统支持运行级别(runlevel)的设置,所谓的“运行级别”就是操作系统当前正在运行的功能级别。在 Linux 系统中,一共定义了七个运行级别(从 0 到 6)。大多数的桌面的 Linux 系统缺省的 runlevel 是 5,用户登录时是图形界面,而多数的服务器版本的 Linux 系统缺省的 runlevel 是 3,用户登录时是字符终端。

Linux 的七个运行级别

下表列出了 Linux 系统 7 个运行级别(runlevel)的具体功能。

级别描述
0系统停机状态,系统默认运行级别不能设置为 0,否则系统不能正常启动。使用 init 0 命令,可关闭系统。
1单用户状态,此状态仅 root 用户可登录。用于系统维护,禁止远程登录,相当于 Windows 下的安全模式。
2多用户状态(无 NFS)。没有网络服务。
3完整的多用户状态(有 NFS)。有网络服务,登录后进入控制台命令行模式。
4系统未使用,保留。
5登录后进入 GUI 图形界面模式。
6重启,系统正常关闭并重启。默认运行级别不能设置为 6,否则系统不能正常启动。

注:runlevel 1 和 2 除了调试之外很少使用。

Linux 运行级别的原理

  1. 在目录 /etc/rc.d/init.d 下有许多服务器脚本程序,一般称为服务(service)。
  2. /etc/rc.d 下有 7 个名为 rcN.d 的目录,对应系统的 7 个运行级别。
  3. rcN.d 目录下都是一些符号链接文件,这些链接文件都指向 init.d 目录下的 service 脚本文件,命名规则为 “K+nn+服务名” 或 “S+nn+服务名”,其中 nn 为两位数字。
  4. 系统会根据指定的运行级别进入对应的 rcN.d 目录,并按照文件名顺序检索目录下的链接文件,对于以 K 开头的文件,系统将终止对应的服务,对于以 S 开头的文件,系统将启动对应的服务。

在运行模式中加入启动服务

如果想要在某个运行模式中加入一个启动服务,可以这样操作:

  1. 首先要新建该服务启动脚本。
  2. 然后把它放置于 /etc/rc.d/init.d 或者 /etc/init.d/(根据你的 Linux 发行版有所不同)目录下。
  3. 要将该启动脚本与运行模式关联起来,你需要这个运行模式的目录下建立一个与 /etc/rc.d/init.d/ 下启动脚本的 symbolic link。
  4. 文件名的前缀通常为 SXX,XX 为数字,这个数字是用来控制该运行模式下服务的启动顺序。脚本的执行顺序是按照数字大小升序执行,就是数字越小越先执行。

下面就是一个在运行模式中加入启动服务具体的例子:

$ cp getiot-service /etc/rc.d/init.d/
$ ln -s /etc/rc.d/init.d/getiot-service /etc/rc3.d/S99getiot-service

这样,当我们下次以 runlevel 3 启动时,getiot-service 服务就会自动启动。

查看 Linux 运行级别

在 Linux 系统中,可以使用 runlevel 命令查看当前的运行级别,例如:

$ runlevel 
N 5

结果显示 Linux 系统当前的运行级别为 5。

切换运行级别

如果想切换运行级别,可以使用 init N 命令临时设置当前的运行级别,例如:

init 3

将运行级别切换到 3。不过这种方式的设置是临时的,在重启系统后就会失效。如果想让运行级别设置在重启服务后仍生效,需修改默认的运行级别设置。则需要到 /etc/inittab 目录下,编辑 inittab 文件的 id:5:initdefault 这一行的数字。