1. /etc/inittab文件的作用
Linux内核启动完成后,内核通过启动第一个用户进程(init进程)来启动其他用户记的进程或服务,init进程是Linux系统中所有进程的父进程。
init进程将解析inittab文件,运行操作系统的配置脚本,对Linux系统进行初始化。
2. /etc/inittab文件的格式分析
inittab文件是一个不可执行的文本文件,它被按照固定的格式书写,以供init进程识别。inittab的每一行都是一个登记项,每个登记项的结构都相同,具体如下:
identifier : run_level : action : process |
(2)run_level
run_level系统运行级,用于指定相应的登记项在哪一个运行级中被处理。如果该字段为空,那么相应的登记项将适用于所有的运行级。在该字段中,可以同时指定一个或多个运行级,其中各运行级分别以数字0.1.2.3.4.5.6表示,且无需对其进行分隔。
runlevel 0 |
让init关闭所有进程并终止系统。 |
runlevel 1 |
用来将系统转到单用户模式,单用户模式只能有系统管理员进入,在该模式下处理那些在有登录用户的情况下不能进行更改的文件,改runlevel的编号1也可以用S代替。 |
runlevel 2 |
允许系统进入多用户的模式,但并不支持文件共享,这种模式很少应用。 |
runlevel 3 |
最常用的运行模式,主要用来提供真正的多用户模式,也是多数服务器的缺省模式。 |
runlevel 4 |
一般不被系统使用,用户可以设计自己的系统状态并将其应用到runlevel。 |
runlevel 5 |
将系统初始化为专用的X Window终端。对功能强大的Linux系统来说,这并不是好的选择,但用户如果需要这样,也可以通过在runlevel启动来实现该方案。 |
runlevel 6 |
关闭所有运行的进程并重新启动系统。 |
(3)action
action字段描述其后的process的运行方式。常用的action字段如下:
respawn |
init应该监视这个进程,即使其结束后也应该被重新启动。 |
wait |
init应该运行这个进程一次,并等待其结束后再进行下一步操作。 |
once |
init只运行一次该进程。 |
boot |
系统启动时运行该进程。 |
bootwait |
在系统启动时运行,init等待进程完成。 |
ctrlaltdel |
当Ctrl+Alt+Del三个键同时按下时运行,把SIGINT信号发送给init。 |
sysinit |
在运行boot或bootwait进程之前运行。 |
powerfail |
当init收到SIGPWR信号时运行。 |
powerokwait |
当收到SIGPWD信号且/etc/文件中的电源状态包含OK时运行。 |
powerwait |
当收到SIGPWD信号,并且init等待进程结束时运行。 |
(4)process
process字段,表示所要执行的shell命令。任何合法的shell语法均适用于该字段。
3. 举例
简易的inittab文件,示例如下:
#first:run the system script file ::sysinit:/etc/init.d/rcS #系统开机或重新启动,执行rcS文件 ::askfirst:-/bin/login #系统启动后,运行登录程序 ::ctrlaltdel:-/sbin/reboot #按下组合键“ctrl+alt+del”,重启Linux系统 #umount all filesystem ::shutdown:/bin/umount -a -r #系统关机时,卸载所有文件系统 #restart init process ::restart:/sbin/init #重启init进程 |