Linux运行级别
Linux运行级别教程
Linux 可以支持运行级别的设置,运行级别就是操作系统当前正在运行的功能级别,级别是从 0 到 6。Centos7 系统之前的版本是通过 /etc/inittab
文件来定义系统,而 CentOS7 用的是 /lib/systemd/system/runlevel*
。
多数的桌面的 Linux 系统缺省的 runlevel 是 5,用户登陆时是图形界面,而多数的服务器版本的 Linux 系统缺省的 runlevel 是 3,用户登陆时是字符界面。
runlevel 1 和 2 除了调试之外很少使用,runlevel s 和 S 并不是直接给用户使用,而是用来为 Single user mode 作准备。
Linux运行七个级别
级别 | 描述 |
---|---|
0 | 停机状态,系统默认运行级别不能设置为 0,否则系统不能正常启动。使用 init 0 命令,可关闭系统。 |
1 | 单用户状态,此状态仅 root 用户可登录。用于系统维护,禁止远程登录,相当于 Windows 下的安全模式。 |
2 | 多用户状态(无NFS)。没有网络服务。 |
3 | 完整的多用户状态(有NFS)。有网络服务,登录后进入控制台命令行模式。 |
4 | 系统未使用,保留。 |
5 | 登录后进入图形 GUI 模式。 |
6 | 重启,系统正常关闭并重启。默认运行级别不能设置为 6,否则系统不能正常启动。 |
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 haicoderservice /etc/rc.d/init.d/
$ ln -s /etc/rc.d/init.d/haicoderservice /etc/rc3.d/S99haicoderservice
这样,下次以 runlevel 3 启动时,haicoderservice 就会自动启动。
查看Linux运行级别
使用 runlevel 命令可以查看当前的运行级别,输入以下命令:
runlevel
运行结果如下:
上图显示此时的运行级别为 3。
临时切换运行级别
使用 init N 命令可以临时设置当前的运行级别,输入以下命令:
init 3
运行结果如下:
不过这种方式的设置,在重启系统后,就会失效。
修改系统默认运行级别
利用 init N 命令,仅能临时修改运行级别。若想让运行级别设置在重启服务后仍生效,需修改默认的运行级别设置。则需要到 /etc/inittab 目录下,编辑 inittab 文件的 id:5:initdefault
这一行的数字。
Linux运行总结
Linux 可以支持运行级别的设置,运行级别就是操作系统当前正在运行的功能级别,级别是从 0 到 6。Centos7 系统之前的版本是通过 /etc/inittab
文件来定义系统,而 CentOS7 用的是 /lib/systemd/system/runlevel*
。
多数的桌面的 Linux 系统缺省的 runlevel 是 5,用户登陆时是图形界面,而多数的服务器版本的 Linux 系统缺省的 runlevel 是 3,用户登陆时是字符界面。