一、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作准备。