Linux完成内核(Kernel)引导后,会由init初始化进程调用/etc/inittab配置文件(ps -aux | less,init进程号为始终为1,是所有系统进程的起点,init进程也有一个PID为0的父进程Kernel Scheduler,该进程用来分配CPU时间和进行进程间切换。)。
/etc/inittab文件格式:id:run-levels:action:process,共包含4项,用冒号分隔,其中某些部份可以为空,各项详细解释如下:
id
标识符,一般为两位字母或数字,该标识符唯一,在配置文件中不能重复。
run-level
指定系统运行级,即执行登记项的init级别。用于指定相应的登记项适用于哪一个运行级,即在哪一个运行级中被处理。如果该字段为空,那么相应的登记项将适用于所有的运行级。在该字段中,可以同时指定一个或多个运行级,其中各运行级分别以数字0 1 2 3 4 5 6或字母a、b、c 表示,且无需对其进行分隔。
Linux有7个运行级,如下:
0-halt 关机,让init关闭所有进程并关机
1-Single user mode 单用户字符界面,通常又称为s或S
2-Multiuser,without NFS 不具备网络文件系统功能的多用户字符界面
3-Full multiuser mode 具备网络文件系统功能的多用户字符界面
4-unused 保留不用
5-X11 具备网络功能的图形用户界面
6-reboot 关闭所有运行的进程并重新启动系统
除此之外还有ABC三个运行级别,但在Linux都没有意义。
action
指定运行动作,用于指定init(M)命令或进程对相应进程(在“process”字段定义)所实施的动作,有以下几种:
行为 | 描述 |
respawn
| 一旦第4项指定的process命令中止,便重新运行该命令。 |
wait
|
执行第4项指定的process,并等其结束后再运行其它命令。
|
once
|
执行第4项指定的process,不等待它执行完成,继续运行其它命令。
|
boot
|
不论在哪个执行等级,系统启动时都会运行第4项指定的process。
|
bootwait
|
不论在哪个执行等级,系统启动时都会运行第4项指定的process,且一直等它执行完备。
|
off
|
关闭任何动作,相当于忽略该配置行。
|
ondemand
|
进入ondemand执行等级时,执行第4项指定的process。
|
initdefault
|
系统启动后进入的执行等级,该行不需要指定process。
|
sysinit
|
不论在哪个执行等级,系统会在执行boot及bootwait之前执行第4项指定的process。
|
powerwait
|
当系统的供电不足时执行第4项指定的 process,且一直等它执行完毕。
|
powerokwait
|
当系统的供电恢复正常时执行第4项指定的process,且一直等它执行完毕。
|
powerfailnow
|
当系统的供电严重不足时执行第4项指定的process。
|
powerfail
|
当出现电源错误时执行第4项指定的process命令,不等待其结束。
|
ctrlaltdel
|
当用户按下【Ctrl+Alt+Del】时执行第4项指定的 process。
|
kbrequest
|
当用户按下特殊的组合键时执行第4项指定的process,此组合键需在keymaps文件定义。
|
process
指定要运行的Shell脚本/命令。
/***************************隐藏部份******************************* /
最先运行的服务存放在/etc/rc.d目录下,启动脚本位于目录/etc/rc.d/init.d中,这些脚本的是被ln命令连接到/etc/rc.d/rc[0-6].d。
在init进程读取/etc/inittab的过程的时候,首先会判断系统缺省的运行级别initdefault(/etc/inittab),
/etc/rc.d/rc.sysinit,系统初始化操作
脚本/etc/rc.d/rc.sysint,不管系统是何级别(0-6),都会执行该脚本,在每次系统启动时运行一次。完成系统服务程序启动,如系统环境变量设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等。
判断默认的运行级别,调味用/etc/rc.d/rc脚本,执行相应运行级别目录中的服务程序,完成相应运行级别的初始化设置。
如果默认的运行级别为3(N:0-6),则如下:
如上文件列表中的文件:
以S开头的文件,S-Start,表示启动该脚本,以K开头的文件,K-Kill,表示关闭该脚本。
数字0-x,表示脚本启动的顺序,数字越小,越优先启动。