Linux 内核发动之后,发动的第一个进程便是 init 进程。该进程从 /etc/inittab 文件中读取装备,对体系进行一系列的初始化作业。下面咱们来剖析一下 /etc/inittab 文件的结构。
inittab 文件的每一行的根本格局如下所示:
l3:3:wait:/etc/rc.d/rc 3
能够看到,该行运用冒号分成了四段。各段的意思如下。
ID
用于标识该装备项的 id,长度为 1~4 个字符。
运转级
列出在哪些运转级时履行该装备项的指令。本例标明运用运转级 3 发动体系时履行该条指令。
动作
指示该条指令应该怎么履行。本例中动作为 wait,表明在这条指令未履行完之前不要去履行下一条指令。
进程
履行该项时需求发动的可履行文件名及其参数。
常见的动作如下所示。
initdefault: 该装备项指定体系的默许运转级。
respawn: 该装备项所指定的进程假如被完毕,则重新发动该进程。
wait: 该装备项指定的进程在运转完毕之前不要履行下一条装备项。
once: 切换到对应的运转级之后,仅履行指定的进程一次。
sysinit: 不管以什么运转级发动,体系发动时都要履行该装备项指定的进程。
boot: 仅在体系发动时履行一次。
bootwait: 仅在体系发动时履行一次,在履行完毕之前不履行下一条装备项
powerfail: 当接收到UPS的断电告诉时履行该项指定的进程。
powerwait: 与powerfail相同,但init会等候进程履行完毕。
powerokwait: 接收到UPS的供电告诉时履行。
ctrlaltdel: 当用户一起按下 Ctrl+Alt+Del 时履行该项指定的进程。
下面咱们看看实践的比如。这是 Fedore Core 3 的 /etc/inittab 文件。删掉了其间的一些注释,并适当地对每一行增加了解说。
# 下面用 initdefault 动作设置默许的运转级。留意该项没有指定进程, # 可是最终的分号不要漏掉 # 0 – 关机 (不要将此运转级设为默许) # 1 – 单用户形式 # 2 – 多用户,不支持 NFS。若无网络则与 3 相同 # 3 – 完好的多用户形式 # 4 – 未运用 # 5 – X11图形界面 # 6 – 重新发动 (不要将此运转级设为默许) # id:5:initdefault: # 体系初始化,包含主机名设置、激活交流分区、查看根分区、 # 以读写方法加载根分区、加载 /etc/fstab 中的分区、 # 激活磁盘配额、加载内核模块等功能 si::sysinit:/etc/rc.d/rc.sysinit # 履行 rc 脚本,发动各种体系服务 l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # 接收 CTRL-ALT-DELETE,按下时重新发动体系 ca::ctrlaltdel:/sbin/shutdown -t3 -r now # 当 UPS 发来断电告诉时,预备在 2 分钟之后关闭体系 pf::powerfail:/sbin/shutdown -f -h +2 Power Failure; System Shutting Down # 假如在关闭体系之前 UPS 康复供电,则撤销关闭体系 pr:12345:powerokwait:/sbin/shutdown -c Power Restored; Shutdown Cancelled # 在规范运转级时发动虚拟终端。这儿预备了六个虚拟终端, # 要想改动虚拟终端的数目,只需求增删这儿的装备项即可 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 # 运转级 5 的时分发动 X 的登录管理器 x:5:respawn:/etc/X11/prefdm -nodaemon