当系统启动时,首先启动内核,内核调用init来完成引导进程.init启动时,它会在/etc/inittab内查找默认的运行级别:如id:2:initdefault:运行/etc/rc.d/init.d中运行级别为2的启动脚本。由于init.d中的运行级别的这些脚本都用ln 命令连接到/etc/rc.d/rcn.d目录.例如/etc/rc.d/rc2.d/S10network对应/etc/rc.d/init.d下的network脚本的.因此运行/etc/rc.d/rc2.d下的脚本. 如/etc/rc.d/rc2.d/S10network或/etc/rc.d/rc2.d/K45named等,则在第10个启动network,在第45个终止named
init详解
1、什么是init进程 /sbin/init。如果内核找不到init,它就会试着运行/bin/sh 3、运行级别 运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。# 0 - 停机(千万不能把initdefault 设置为0 ) # 1 - 单用户模式 # 2 - 多用户,没有 NFS # 3 - 完全多用户模式(标准的运行级) # 4 - 没有用到 # 5 - X11 (xwindow) # 6 - 重新启动 (千万不要把initdefault 设置为6 )
12 : 2 : wait : /etc/init.d/rc2 12:是一个任意指定的标签; 2:表示这一行适用于运行那个级别(这里是2); wait:进入运行级别时,init应该等待第四个字段内的命令结束。 /etc/init.d/rc2:Linux版本的不同,采用的具体命令也不同,运行级别的配置也有差别。
3)、rcn.d与inittab的关系
rcn.d目录和运行级别n相关。/ect/rc.d/rcn.d是用ln命令和/etc/rc.d/init.d中的脚本关联的,例如: 文件开头的S 代表start 就是启动服务的意思,后面的数字10 就是启动的顺序
/etc/rc.d/rc2.d/S80postfix,80 就是顺序在10 以后,因为没有启动网络的情况下,启动postfix是没有任何作用的 标准的Linux运行级为3 或者5 ,如果是3 的话,系统就在多用户状态。如果是5的话,则是运行着X Window 系统。如果目前正在3或5,而你把运行级降低到2的话,init 就会执行 K45named 脚本。 不同的运行级有不同的用处,例如,如果丢失了root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:init=/bin/sh rw就可以使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证, 让你使用passwd 程序来改变root口令,然后启动到一个新的运行级。4、/etc/inittab中的特殊配置 /etc/inittab中,有几个特殊的特性,允许init重新激活特殊事件。这些特殊特性都是用第三个字段中的特殊关键字标记出来的。比如:
1. powerwait 允许init在用户于控制台键盘上按下Ctrl+Alt+Del组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将Ctrl+Alt+Del组合键配置为别的行为,比如忽略等。
3. sysinit 1、确定当前的运行级别 本章不是针对系统管理员的,但是作为shell编程者,应当了解rc.scripts是什么,它们是被怎样放置到运行级别配置目录中的。顺便说一下,如果想知道当前的运行级别,可以用下面的命令:who -r
在‘run level’后面的数字就是当前的运行级别。后面的时间是系统最近一次重启动的时间。 2 3 第一列表示系统的前一个运行级别,第二列表示系统当前的运行级别,在这里是3。
2、inittab 以数字10到16开始的行启动或停止该运行级别所对应的全部运行级别脚本。例如,该文件中有这样一行: 15:5:wait:/etc/rc.d/rc 5 它的意思是,在运行级别5应该以参数5执行脚本/etc/rc.d/rc,即/etc/rc.d/rc执行/etc/rc.d/rc5.d目录中的所有脚本。 在上述文件的最后一行,在运行级别2、3、4和5,该进程将会始终存在,即使暂时掉下来,大概也不会超过1s。这一始终存在的进程是串口ttyS1上的mingetty。该命令含有一个参数,即终端类型为vt100。
3、运行级别脚本的格式 安装运行脚本 1、安装运行级别脚本如果想要安装自己的运行级别脚本,必须: " 编写该脚本,确保它符合调用标准。 " 确信它能够启动或终止相应的服务。 " 将该脚本放置于(取决于操作系统) /etc/init.d或/usr/sbin/init.d或/etc/rc.d中。 " 在相应的rcN.d目录中按照合理的命名方式创建链接。 下面的脚本能够启动或停止一个名为rc.audit的审核应用程序。该服务运行于级别3、5、4,停止于级别6、2、1。通过查看rcN.d中的条目,我们发现序号35空闲,于是就使用该序号。实际上,系统并不对使用已占用的序号作任何检查。
让我们假定该脚本已经通过了测试。它能够正确地启动和停止审核服务。现在我们把该脚本放置在相应的运行级别目录中。
$pwd
$ls -l 在其他相关目录中,也可以如法炮制,停止相应的审核服务。现在当系统重启动时(运行级别6 ),它将被停止;在运行级别切换到2或1时也是如此。该服务在运行级别4或5中同样也会被启动。 2、使用inittab来启动应用程序
我们还可以用其他的方法来启动应用程序。可以通过在inittab文件中加入相应的条目来做到这一点。 3、启动和停止服务的其他方法:rc.local 如果不想把/etc/inittab文件弄得过于杂乱,还有其他的方法可以实现启动和停止服务的功能。大多数系统都含有一个名为rc.local的文件,一般来说也是位于/etc目录下。该脚本文件将在inittab和运行级别脚本之后运行。可以在该文件中加入任何命令,或从中调用最习惯用的启动脚本。有些系统还在/bin目录下(更多的是在/usr/sbin目录下)含有一个名为shutdown的脚本文件。可以使用它来关闭某些服务。 |
|