init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
init.d下面有许多脚本程序。一般来说,针对每一项需要在boot或改变运行级时启动的服务均需要一个脚本程序。这些服务包括网络,NFS,sendmail,httpd等等。启动事件的执行过程是这样的:
• 系统内核查找init并执行第一个发现的init。
• 由init来执行/etc/rc.d/rc.sysinit
• rc.sysinit执行了一系列的操作后接着运行rc.serial(如果存在的话)
• 由init执行所有默认运行级下的脚本程序
• 由init执行rc.local
默认的运行级由/etc/inittab控制。在该文件里面有一行:id:3:initdefault:
对于大多数系统,该值被设置为3,也就是默认运行级为3。如果您想改变默认运行级,就编辑/etc/inittab,将3改为其它数值。
不同的运行级定义如下:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x 下的安全模式类似。
2 为多用户模式,但是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是 X11 ,启动时进到 X Window 系统。
6 为重启,运行 init 6 机器就会重启。
以rc2.d为例,该目录下有很多以S加数字开头的符号连接,如S10network。文件开头的S代表start就是启动服务的意思,后面的数字10就是启动、停止的顺序。在同一个目录下,你还可以看到S80sendmail这个文件,因为没有启动网络的情况下,启动sendmail是没有何作用的,所以用80这个数值来指出sendmail的启动在network(10)以后。
另外,在/etc/rc.d/rc2.d 还可以看到那些K开头的文件,例如/etc/rc.d/rc2.d/ K35dhcpd,K代表kill,就是停止或关闭服务。
不同的运行级有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:linux single,就可以使机器进入运行级1,并把 root 文件系统挂为读写。此时的单用户模式会跳过所有系统认证,你可以键入passwd指令来改变root口令。
标准的Linux运行级为3 或者5,如果设定是3的话,系统就运行在完全多用户状态。如果设定是5的话,则启动后自动运行X Window系统。
Linux运行级的改变可以通过 init 命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用 init 1 来切换。在Linux的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K 和 S 开头的文件,按后面的数字顺序,执行这些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux 提供了chkconfig 命令用来更新和查询不同运行级上的系统服务。
chkconfig语法为:
chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name <on|off|reset>
chkconfig [--level levels] name
chkconfig 有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。
chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回 true,否则返回 false。 --level 选项可以指定要查看的运行级而不一定是当前运行级。
如果在服务名后面指定了on,off 或者 reset,那么 chkconfig 会改变指定服务的启动信息。on 和 off 分别指服务在改变运行级时的启动和停止。reset 指初始化服务信息,无论有问题的初始化脚本指定了什么。
对于 on 和 off 开关,系统默认只对运行级 3,4,5有效,但是reset可以对所有运行级有效。指定--level选项时,可以选择特定的运行级。
需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
chkconfig选项介绍:
--level levels
指定运行级,由数字 0 到 7 构成的字符串,如:--level 35 表示指定运行级3 和5。
--add name
这个选项增加一项新的服务,chkconfig确保每个运行级有一项启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init 脚本自动建立。
--del name
用来删除服务,并把相关符号连接从 /etc/rc[0-6].d 删除。
--list name
列表,如果指定了name 那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。
每个被chkconfig管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以用“\”跨行注释。
例如,random.init 包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
表明random脚本在运行级 2, 3, 4, 5 启动,启动优先权为20,停止优先权为80。如果想了解更详细的内容,现在就去看看自己/etc/rc.d/init.d目录下的脚本吧。
| 共3页: 上一页 [1] [2] 3 | ||
|