一, Linux 的运行级别 (runlevel)
运行级别 0: 系统停机状态, 系统默认运行级别不能设为 0, 否则不能正常启动
运行级别 1: 单用户工作状态, root 权限, 用于系统维护, 禁止远程登陆
运行级别 2: 多用户状态 (没有 NFS)
运行级别 3: 完全的多用户状态 (有 NFS), 登陆后进入控制台命令行模式
运行级别 4: 系统未使用, 保留
运行级别 5:X11 控制台, 登陆后进入图形 GUI 模式
运行级别 6: 系统正常关闭并重启, 默认运行级别不能设为 6, 否则不能正常启动
二, 运行级别的原理
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 开头的文件, 系统将启动对应的服务
5, 查看运行级别用: runlevel
6, 进入其它运行级别用:(sudo) init N
7, 另外 init0 为关机, init 6 为重启系统
另外, 当使用 runlevel 查看运行级别时, 结果会显示前一次的运行级别和现在的运行级别, 如果前次的运行级别为 N, 那么说明前次没有运行级别 (可能刚刚 power on)
三, 在运行模式中加入启动服务
要在某个运行模式中加入一个启动服务
1, 首先要新建该服务启动脚本
2, 然后把它放置于 / etc/rc.d/init.d 或者 / etc/init.d/(根据你的 Linux 版本有所不同) 目录下
3, 要将该启动脚本与运行模式关联起来, 你需要这个运行模式的目录下建立一个与 / etc/rc.d/init.d / 下启动脚本的 symbolic link
文件名的前缀通常为 SXX,XX 为数字, 这个数字是用来控制该运行模式下服务的启动顺序.
脚本的执行顺序是按照数字大小升序执行, 就是数字越小越先执行.
如:
下面就是一个在运行模式中加入启动服务具体的例子:
- $ cp myservice /etc/rc.d/init.d/
- $ ln -s /etc/rc.d/init.d/myservice /etc/rc3.d/S99myservice
这样, 下次以 runlevel 3 启动时, myservice 就会自动启动.
四, 注意
多数的桌面的 Linux 系统缺省的 runlevel 是 5, 用户登陆时是图形界面, 而多数的服务器版本的 Linux 系统缺省的 runlevel 是 3, 用户登陆时是字符界面, runlevel 1 和 2 除了调试之外很少使用, runlevel s 和 S 并不是直接给用户使用, 而是用来为 Single user mode 作准备.
参考: https://www.jianshu.com/p/635e8480a75e
来源: http://www.bubuko.com/infodetail-3363282.html