action
操作字段action的有效操作有:
- respawn :进程将在终止时重新启动(例如 getty)。
- wait :进程将在进入指定的运行级别时启动一次,init 将等待其终止。
- once :进程将在进入指定的运行级别时执行一次。
- boot :该过程将在系统引导期间执行。运行级别字段被忽略。
- bootwait :该进程将在系统启动期间执行,而 init 等待其终止(例如 /etc/rc)。运行级别字段被忽略。
- ondemand :只要调用指定的ondemand 运行级别,就会执行标有on demand 运行级别的进程。但是,不会发生运行级别更改(按需运行级别是“a”、“b”和“c”)。
- initdefault :initdefault 条目指定在系统启动后应进入的运行级别。如果不存在,init 将在控制台上询问运行级别。进程字段被忽略。
- sysinit :该过程将在系统引导期间执行。
它将在任何引导或者引导等待条目之前执行。运行级别字段被忽略。
- powerwait : 断电时将执行该过程。 Init 通常通过与连接到计算机的 UPS 交谈的进程来通知这一点。 Init 将在继续之前等待该过程完成。
- powerfail :与 powerwait 一样,除了 init 不等待进程完成。
- powerokwait :一旦通知 init 电源已恢复,此过程将立即执行。
- powerfailnow : 当 init 被告知外接 UPS 的电池快没电并且电源出现故障时,将执行此过程(前提是外接 UPS 和监控进程能够检测到这种情况)。
- ctrlaltdel:init 收到 SoirNT 信号时将执行该进程。
这意味着系统控制台上有人按下了 Ctrl-Alt-Del 组合键。通常,人们希望执行某种关闭以进入单用户级别或者重新启动机器。
- kbrequest :当 init 从键盘处理程序接收到在控制台键盘上按下了特殊组合键的信号时,将执行该过程。
更多文档可以在 kbd-x.xx 包中找到。
基本上你想将一些键盘组合映射到“KeyboardSignal”动作。
例如,要为此目的映射 Alt+UpArrow,请在键盘映射文件中使用以下内容:
alt keycode 103 = KeyboardSignal
'inittab' 文件指定了 Linux 的启动和正常操作程序
inittab 文件描述了在启动时和正常操作期间启动的进程。
Init 区分不同的运行级别,每个运行级别都可以有自己的一组启动的进程。
有效的运行级别是 0 -6 加上 A 、 B 和 C 用于按需条目。
inittab 文件中的条目具有以下格式:
id:runlevels:action:process
以“#”开头的行将被忽略。
在文件中, id 是 1-4 个字符的唯一序列,用于标识 inittab 中的条目。
对于 gettys 或者其他登录过程,id 字段应该是相应 tty 的 tty 后缀,例如1 为 tty1 。
否则,登录记帐可能无法正常工作。
运行级别、操作和进程
iniitab 文件包含的信息包括:
- runlevels 列出了应该对其采取指定操作的运行级别。
- action 描述了应该采取什么行动。
- process 指定要执行的进程。如果进程字段以“+”字符开头,则 init 不会对该进程进行 utmp 和 wtmp 记帐。这对于坚持执行自己的 utmp/wtmp 内务的 gettys 是必需的。这也是一个历史错误。
运行级别字段可能包含不同运行级别的多个字符。
例如,123 指定进程应该在运行级别 1、2 和 3 中启动。
按需条目的运行级别可能包含 A、B 或者 C。
sysinit 、 boot 和 bootwait 条目的 runlevels 字段被忽略。
当系统运行级别更改时,任何未为新运行级别指定的正在运行的进程都会被终止,首先使用 SIGTERM,然后使用 SIGKILL。
“inittab”文件示例
这是一个类似于旧 Linux inittab 的 inittab 示例:
# inittab for linux id:1:initdefault: rc::bootwait:/etc/rc 1:1:respawn:/etc/getty 9600 tty1 2:1:respawn:/etc/getty 9600 tty2 3:1:respawn:/etc/getty 9600 tty3 4:1:respawn:/etc/getty 9600 tty4
这个 inittab 文件在引导期间执行 /etc/rc 并在 tty1-tty4 上启动 gettys。
具有不同运行级别的更精细的 inittab:
# Level to run in id:2:initdefault: # System initialization before anything else. si::sysinit:/etc/rc.d/bcheckrc # Runlevel 0,6 is halt and reboot, 1 is maintenance mode. l0:0:wait:/etc/rc.d/rc.halt l1:1:wait:/etc/rc.d/rc.single l2:2345:wait:/etc/rc.d/rc.multi l6:6:wait:/etc/rc.d/rc.reboot # What to do at the "3 finger salute". ca::ctrlaltdel:/sbin/shutdown -t5 -rf now # Runlevel 2&3: getty on console, level 3 also getty on modem port. 1:23:respawn:/sbin/getty tty1 VC linux 2:23:respawn:/sbin/getty tty2 VC linux 3:23:respawn:/sbin/getty tty3 VC linux 4:23:respawn:/sbin/getty tty4 VC linux S2:3:respawn:/sbin/uugetty ttyS2 M19200