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 运行级别的原理
- 在目录
/etc/rc.d/init.d
下有许多服务器脚本程序,一般称为服务(service)。 - 在
/etc/rc.d
下有 7 个名为 rcN.d 的目录,对应系统的 7 个运行级别。 - rcN.d 目录下都是一些符号链接文件,这些链接文件都指向 init.d 目录下的 service 脚本文件,命名规则为 “K+nn+服务名” 或 “S+nn+服务名”,其中 nn 为两位数字。
- 系统会根据指定的运行级别进入对应的 rcN.d 目录,并按照文件名顺序检索目录下的链接文件,对于以 K 开头的文件,系统将终止对应的服务,对于以 S 开头的文件,系统将启动对应的服务。
在运行模式中加入启动服务
如果想要在某个运行模式中加入一个启动服务,可以这样操作:
- 首先要新建该服务启动脚本。
- 然后把它放置于
/etc/rc.d/init.d
或者/etc/init.d/
(根据你的 Linux 发行版有所不同)目录下。 - 要将该启动脚本与运行模式关联起来,你需要这个运行模式的目录下建立一个与
/etc/rc.d/init.d/
下启动脚本的 symbolic link。 - 文件名的前缀通常为 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
这一行的数字。