|
沙发
楼主 |
发表于 2009-5-2 01:50:55
|
只看该作者
runlevel(运行等级)
与某一个 runlevel 相关联的进程由 /sbin/init 来启动。
一般使用 0-6 个等级,第 4 等级未用:
Runlevel
| 描述
| 0
| 关机
| 1,s,S
| 单用户模式,只允许 root 登录,没有其它服务运行
| 2
| 多用户,无网络,用户仅能在本地登录
| 3
| 多用户,有网络,用户可本地或网络登录
| 4
| 未用( 保留 )
| 5
| 多用户,有网络,有X Windows
| 6
| 重启
|
手动切换 runlevels
在 /etc/inittab 里有以下这么一行:# The default runlevel is defined here
id:5:initdefault: 其中的 5 表示系统默认以第 5 等级启动。
当 init 发现默认等级为 5 时(别的等级也一样),就会从以下行:l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
#l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6 找到相应的目录入口并进入到相应的目录中执行相应的脚本。如默认等级为 5 时,就进入 /etc/init.d/rc5.d 目录下执行里面的脚本。
各个运行等级对应的目录为:
0
| /etc/init.d/rc0.d | 1
| /etc/init.d/rc1.d
| 2
| /etc/init.d/rc2.d | 3
| /etc/init.d/rc3.d | 4
| /etc/init.d/rc4.d | 5
| /etc/init.d/rc5.d | 6
| /etc/init.d/rc6.d | 在这些目录里,有许多的脚本文件---其实这些文件只是 /etc/init.d 目录下脚本的软链接。这些脚本的名字有的以 K 字母开头,有的以 S 字母开头;以 K 开头的脚本表示 "KILL",其意是系统启动时不会启动这些脚本所对应的程序(KILL动作在等级切换时才会发生),以 "S" 开头的脚本表示 "Start",其意是系统启动时会启动这些脚本所对应的程序。检查 S 和 K 的工作都由 /sbin/init 来完成。
在相应的目录下建立这些脚本软链接的目的一来是为了省空间,二来是方便当 /etc/init.d 中的脚本更新时一次性让各目录下的脚本链接也相应更新。
需要注意的是,当系统以一个默认的等级启动后,并不是一直就在这个等级上呆着不动了,它是可以切换的。比如关机时,就是从第 5 等级切换到第 0 等级。在此切换过程中,会触发 init 运行/etc/init.d/rc5.d 下所有的 kill 脚本,然后运行所有的 /etc/init.d/rc0.d 下的 start 脚本(当然,关机时,rc0.d 里没有 start 脚本)。
在 K 和 S 后面接的数字表示脚本执行的优先权,数字小的执行在先,数字大的执行在后。这里的先后有程序的依赖关系,比如一个需要确定网络启动后才可以进行初始化的程序,那么他就应该在网络启动之后启动,也就是在 S 字母后的数字要比网络的数字要来得大。
在 SUSE 里,可以使用 rcservicename 命令来启动和停止服务,当然也可以用 service servicename start/stop 命令来执行。比如要启动阿帕奇服务,那么就 rcapache2 start,要关闭就 rcapache2 stop 。
可以手动切换运行等级,加入从等级 5 切换到没有 X windows 的等级 3 ,可以:假如需要等待若干秒后使切换等级生效,则可以:telinit -t 10 3 #telinit 是 init 的软链接 |
|