Linux系统有7个运行级别(runlevel)
运行级别0:
系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:
单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:
多用户状态(没有NFS)
运行级别3(服务器默认的运行级别):
完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:
系统未使用,保留
运行级别5:
X11控制台,登陆后进入图形GUI模式
运行级别6:
系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
运行级别的原理:
- 在目录/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开头的文件,系统将启动对应的服务
- 查看运行级别用:runlevel
- 进入其它运行级别用:init N
- 另外init0为关机,init 6为重启系统
默认启动级别修改
由于现在的Linux系统安装完后就运行在第5个级别,即系统启动后直接进入图形界面,而不用在字符模式下登录后用startx或者xinit 来起动图形界面。建议在系统安装完成后把系统的默认运行等级设置在第3级,在字符终端登录后,再手工输入startx 命令起动图形界面。可以用如下的方法修改:
用文本编辑器修改 /etc/inittab文件,把
代码:
id:5:initdefault:这一行,修改成
代码:
id:3:initdefault:保存后就reboot重起,系统就默认起动到字符界面。
不同运行级别之间的差别的在于系统默认起动的服务的不同,如运行级别3默认不启动X图形界面服务,而运行级别5却默认起动。本质上是没有区别的,更无所谓不同级别间功能强弱的问题。用户完全可自给定义不同级别的默认服务。在任何运行级别,用户都可用init 命令来切换到其他运行级别。
服务启动脚本的启动级别设置
在编写service脚本的时候,有如下所示注释
# chkconfig: - 98 02
其中 - 代表启动级别,默认为2345
# chkconfig: 345 65 65
# httpd默认启动模式
98代表启动优先级
02代表停止优先级
范围都是0-100
还有# description: 和 # processname:等注释也需要描述
通过chkconfig管理自启动服务
chkconfig --list #列出所有的系统服务。
chkconfig --add httpd #增加httpd服务。
chkconfig --del httpd #删除httpd服务。
chkconfig --level httpd 2345 on # 设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态。
chkconfig --list # 列出系统所有的服务启动情况。
chkconfig --list mysqld # 列出mysqld服务设置情况。
chkconfig --level 35 mysqld on # 设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭。
chkconfig mysqld on # 设定mysqld在各等级为on,“各等级”包括2、3、4、5等级。
chkconfig –level redis 2345 on # 把redis在运行级别为2、3、4、5的情况下都是on(开启)的状态。
如何增加一个服务:
- 服务脚本必须存放在/etc/ini.d/目录下;
- chkconfig --add servicename在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
- chkconfig --level 35 mysqld on修改服务的默认启动等级。
或者
- 服务脚本必须存放在/etc/ini.d/目录下;
- 服务脚本有标准的chkconfig及description注释;
- 使用service servicename start启动。