NAME
inittab - 与 sysv 兼容的 init 进程使用的初始化文件格式 描述inittab 文件描述在系统引导及通常的操作期间, 都启动哪些进程 (比如 /etc/init.d/boot, /etc/init.d/rc, getty 等等). Init(8) 讨论有关 runlevels (运行级) 的概念, 每一个运行级都有它自己启动进程的集合. 有效的运行级为 0-6 加上用于 ondemand 条目的 A, B 和 C. inittab 文件中的每一个条目有如下的格式: id:runlevels:action:process 以 `#’ 开头的行被忽略. id inittab 文件中条目的唯一标识, 限于 1-4 个字符 (如果是用版本号小于 5.2.18 或 a.out 的库编译生成的 sysvinit 程序, 则仅限于 2 个字符). 注意: 对于 getty 或其它的注册进程, id 必须是响应的终端线路的 tty 后缀, 如 1 响应 tty1, 否则, 注册过程不能正常的工作. runlevels 列出发生指定动作的运行级. action 描述要发生的动作. process 要执行的进程. 如果 process 域以一个 `+’ 开头, init 不会在 utmp 和 wtmp 文件中为此进程记帐. 这是由于 getty 自己主持 utmp/wtmp 记帐的需要, 同时这也是一个历史遗留的漏洞. runlevels 域可以包含表示不同运行级的多个字符, 例如 123 表示本进程在运行级为 1, 2 和 3 时都要启动. 用于 ondemand 条目的 runlevels 域可以包含 A, B, 或 C. 用于 sysinit, boot, 和 bootwait 条目的 runlevels 域被忽略. 当改变运行级时, 在新运行级中没有给出的那些正在运行的进程被杀死, 先使用 SIGTERM 信号, 然后是 SIGKILL. action 域可以使用的动作有: respawn 该进程只要终止就立即重新启动 (如 getty). wait 只要进入指定的运行级就启动本进程, 并且 init 等待该进程的结束. once 只要进入指定的运行级就启动一次本进程. boot 在系统引导期间执行本进程. runlevels 域被忽略. bootwait 在系统引导期间执行本进程. 并且 init 等待该进程的结束 (如 /etc/rc). runlevels 域被忽略. off 什么也不做. ondemand 在进入 ondemand 运行级时才会执行标记为 ondemand 的那些进程. 无论怎样, 实际上没有改变运行级 (ondemand 运行级就是 `a’, `b’, 和 `c’). initdefault initdefault 条目给出系统引导完成后进入的运行级, 如果不存在这样的条目, init 就会在控制台询问要进入的运行级. process 域被忽略. sysinit 系统引导期间执行此进程. 本进程会在 boot 或 bootwait 条目之前得到执行. runlevels 域被忽略. powerwait 本进程在电源不足时执行. 通常在有进程把 UPS 和计算机相连时通知 init 进程, Init 在继续其它工作之前要等待此进程结束. powerfail 类似 powerwait, 但是init 不等待此进程完成. powerokwait 在 init 收到电源已经恢复的通知后立即执行此进程. powerfailnow 本进程在 init 被告知 UPS 电源快耗尽同时外部电源失败 (无效) 时被执行. (假设 UPS 和监视进程能够发现这样的情况). ctrlaltdel 在 init 收到 SIGINT 信号时执行此进程. 这意味着有人在控制台按下了 CTRL-ALT-DEL 组合键, 典型地, 可能是想执行类似 shutdown 然后进入单用户模式或重新引导机器. kbrequest 本进程在 init 收到一个从控制台键盘产生的特殊组合按键信号时执行. 对于此功能本文档尚未完成; 可以在 kbd-x.xx 包中找到更多信息 (在写作本文档时最新的是 kbd-0.Array4). 当然你可能想为某些 "KeyboardSignal" 行为映射组合键, 如为了映射 (Alt-上箭头) 可以在键盘映射文件中 使用如下的方式: alt keycode 103 = KeyboardSignal 举例 这是一个与老的 Linux inittab 文件类似的例子文件: # inittab for linuxid:1:initdefault:rc::bootwait:/etc/rc1:1:respawn:/etc/getty Array600 tty12:1:respawn:/etc/getty Array600 tty23:1:respawn:/etc/getty Array600 tty34:1:respawn:/etc/getty Array600 tty4本文件在引导时执行 /etc/rc 并且在 ty1-tty4 上启动 getty 进程. 一个更详尽的 inittab 会有不同的运行级 (参考本身的注释): # 进入默认的运行级id:2:initdefault:# 在进行其它工作之前先完成系统初始化.si::sysinit:/etc/rc.d/bcheckrc# 运行级 0 挂起系统, 6 重新引导, 1 单用户模式.l0:0:wait:/etc/rc.d/rc.haltl1:1:wait:/etc/rc.d/rc.singlel2:2345:wait:/etc/rc.d/rc.multil6:6:wait:/etc/rc.d/rc.reboot# "3 个键" 按下时要做的工作.ca::ctrlaltdel:/sbin/shutdown -t5 -rf now# 运行级2和3: 在控制台生成 getty 进程, 运行级为3时在 modem 上生成 getty.1:23:respawn:/sbin/getty tty1 VC linux2:23:respawn:/sbin/getty tty2 VC linux3:23:respawn:/sbin/getty tty3 VC linux4:23:respawn:/sbin/getty tty4 VC linuxS2:3:respawn:/sbin/uugetty ttyS2 M1Array200 文件 /etc/inittab zylonite 上是::sysinit:/etc/init.d/rcSttyS0::respawn:-/bin/shttyS1::respawn:-/bin/shttyS2::respawn:-/bin/shtty1::respawn:-/bin/shtty2::respawn:-/bin/sh::ctrlaltdel:/bin/umount -a -rfedra 3 上是## inittab This file describes how the INIT process should set up# the system in a certain run-level.## Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes## 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)#id:3:initdefault:# System initialization.si::sysinit:/etc/rc.d/rc.sysinitl0: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# Trap CTRL-ALT-DELETEca::ctrlaltdel:/sbin/shutdown -t3 -r now# When our UPS tells us power has failed, assume we have a few minutes# of power left. Schedule a shutdown for 2 minutes from now.# This does, of course, assume you have powerd installed and your# UPS connected and working correctly.pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"# If power was restored before the shutdown kicked in, cancel it.pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"# 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# Run xdm in runlevel 5x:5:respawn:/etc/X11/prefdm -nodaemon