本文地址:http://blog.csdn.net/spch2008/article/details/9468537
linux通过设置不同的run level级别,使系统启用不同的服务,从而使linux的使用环境有所不同。
0 - halt 停机
1 - single user mode 单用户,系统故障维护时使用
2 - Multi-user,without NFS 多用户,没有NFS
3 - Fullmulti-user mode 完全多用户
4 - unused 系统保留
5 - X11 加载X Window
6 - reboot 重启
内核加载完毕以后,执行/sbin/init,创建第一个进程,该进程负责配置系统环境,启动服务等。
init读取/etc/inittab配置文档,进行相应操作。
id:5:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
第一行: id:5:initdefault,配置的level为5。
第二行: si::sysinit:/etc/rc.d/rc.sysinit 调用/etc/rc.d/rc.sysinit进行系统初始化。
接下来,根据run level 5,执行/etc/rc.d/rc5.d中的程序。
K01dnsmasq K73ypbind K89netplugd S08iptables S26lvm2-monitor
K02avahi-dnsconfd K74ntpd K89pand S08mcstrans S28autofs
rc5.d目录中的脚本都是一些链接,这些链接的格式为:
Snn.script_name S:代表启动相应的进程, nn为序号
Knn.script_name K:代表杀死相应的进程,nn为序号
当init进程调用相应的运行级别脚本时,杀进程按照从高到低的K序号进行,即K02avahi-dnsconfd,K01dnsmasq
而启动进程按照从低到高的序号进行。
可见,这些脚本都连接到了/etc/init.d/文件夹中的相应脚本,rcN.d目录都连接到同一个目录下脚本,避免重复。
lrwxrwxrwx 1 root root 17 Mar 30 2011 K01dnsmasq -> ../init.d/dnsmasq
lrwxrwxrwx 1 root root 24 Mar 30 2011 K02avahi-dnsconfd -> ../init.d/avahi-dnsconfd
lrwxrwxrwx 1 root root 17 Mar 30 2011 K05anacron -> ../init.d/anacron
lrwxrwxrwx 1 root root 17 Mar 30 2011 K05wdaemon -> ../init.d/wdaemon
注意到,S99local连接rc.local脚本文件,可以在开机时执行用户设定的自定义功能,比如添加路由,删除路由等。
lrwxrwxrwx 1 root root 11 Mar 30 2011 S99local -> ../rc.local
lrwxrwxrwx 1 root root 16 Mar 30 2011 S99smartd -> ../init.d/smartd
同时注意到:/etc/rc.local, /etc/init.d都连接到了/etc/rc.d/下相应文件。