Linux系统运行级管理

发表于:2007-07-04来源:作者:点击数: 标签:
运行级的概念来自System V,运行级别将启动过程分成不同的集合,每个集合包含一组脚本, 当init程序切换运行级到对应的级别时,相应的脚本就被触发,切换运行级可以通过执行init [级别号]完成。 (比如,在 Linux 中,run level 6代表reboot,所以执行init 6
运行级的概念来自System V,运行级别将启动过程分成不同的集合,每个集合包含一组脚本,
当init程序“切换运行级”到对应的级别时,相应的脚本就被触发,切换运行级可以通过执行init [级别号]完成。
(比如,在Linux中,run level 6代表reboot,所以执行init 6就会引起系统重新启动)运行级别的定义每种
System V都不完全一样,只能通过直接读/etc/inittab来确定,下面是一个标准的Linux的/etc/inittab,
注意这里解释的内容来自redhat,但是其他的版本也大同小异。我们将它分成若干段来解释,如同一般情况那样,
用#开始的行是注释,而非注释行的语法是:标号:运行级别:操作方式:命令 标号是这一行的标签,
运行级别用于定义这一行应该用于那些级别,如果为空就定义为所有级别,操作方式可以是一些确定的字符串,
代表如何执行后面的命令,而命令则给处在进入这一级别时执行的程序。
下面是它的内容:# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not have.networking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)#
上面的几行解释了缺省的运行级别定义:停机,系统进入这一级别后关机;单用户模式,
在这个模式中只能从控制台操作计算机,网络和终端不启动,许多文件系统也没有连结;
多用户模式,但关闭了网络服务支持完全的多用户模式,就是我们一般使用的模式无定义图形界面模式,
系统切入这一运行级后自动启动X Window系统重新启动这些级别的定义是任意的,然而你最好不要修改它,
尤其是level 0,1和6,因为许多程序都使用init 0之类的方式实现对系统的控制,
其他的Linux发行版本可能会更改2-5的定义,你需要参考/etc/inittab才能判断到底那个级别是什么意思,
不过一般来说0,1和6总是上面的定义。下面开始才是真正的内容,
首先系统必须定义缺省的运行级别:id:3:initdefault:initdefault关键字决定了缺省的运行级别,
在这里是3,也就是在执行了公共的系统启动脚本之后,
系统将会执行与级别3对应的那些行# System initialization.si::sysinit:/etc/rc.d/rc.sysinit
这里的sysinit关键字定义了公共的“系统初始化”脚本,在相应于运行级的地方是空,表示适用于所有运行级别
。注意它将在系统进入任何运行级别以前完成,一会我们再研究这个脚本的内容。l0:0:wait:/etc/rc.d/rc 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6这里开出了六个运行级别的定义,运行级0就去执行命令/etc/rc.d/rc 0,运行级1是/etc/rc.d/rc 1,.....
诸如此类。wait关键字表示系统必须等待此命令执行完才能开始下一步工作。# Things to run in every runlevel.ud::once:/sbin/update这又是一个适用于所有级别的命令。update命令实际是去启动updated守护进程,以便定期刷新内存中的超级块表。Once关键字说明这个项只被执行一次。# Trap CTRL-ALT-DELETEca::ctrlaltdel:/sbin/shutdown -t3 -r nowctrlaltdel定义当热启动组合键被触发时系统的行为,这里定义所有的运行级别对它的响应都是重新启动(shutdown –r)pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"这两行定义如何响应ups信息,如果系统掉电(powerfail),执行两分钟后关机的指令;如果关机之前电源恢复,取消关机操作。# Run gettys in standard runlevels1:2345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6 2,3,4,5都是多用户级别,为系统开出6个虚拟屏幕(就是用Alt+Fn即获得虚拟屏幕),respawn关键字表示这个动作在每次进入相应运行级别时都会执行。# Run xdm in runlevel 5# xdm is now a separate servicex:5:respawn:/etc/X11/prefdm -nodaemon对于级别5,启动图形界面。归纳一下,系统在读入inittab以后要做什么?设置Ctrl+Alt+Del响应,设置好对UPS的支持,然后应该执行/etc/rc.d/rc.sysinit,然后是/etc/rc.d/rc 3,最后是update和启动虚拟屏幕。显然,系统的主要初始化命令应该在/etc/rc.d/rc.sysinit和/etc/rc.d/rc 3中完成。rc.d下的基本脚本下面我们来研究启动脚本,这里的脚本来自redhat 6.1,因为这是个最为广泛使用的版本,其他的版本的特有问题将在下一节讨论。首先,系统将执行/etc/rc.d/rc.sysinit,这是个shell脚本,你可以用普通的文本编辑工具对它进行处理,为了简便,我们只研究其中较为重要的部分或者较为典型的段落:#!/bin/sh## /etc/rc.d/rc.sysinit - run once at boot time## Take
 

原文转自:http://www.ltesting.net