分享

剖析inittab文件

 恶之一眉 2012-02-29

inittab文件时init进程读取的配置文件,本身不可执行,由若干条指令组成。文件描述在系统引导及通常的操作期间, 都启动哪些进程 (比如/etc/init.d/boot, /etc/init.d/rc, getty 等等)。
inittab 文件中的每一个条目有如下的格式:
id:runlevels:action:process
共四个字段,由冒号隔开,每个字段的意义和取值如下:

id:

inittab文件中条目的唯一标识, 限于 1-4 个字符 (如果是用版本号小于 5.2.18 或a.out 的库编译生成的 sysvinit程序, 则仅限于 2 个字符).
注意: 对于getty 或其它的注册进程, id 必须是响应的终端线路的 tty后缀, 如 1 响应
tty1, 否则, 注册过程不能正常的工作.

runlevels:

列出发生指定动作的运行级,可以取0至6.

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 收到一个从控制台键盘产生的特殊组合按键信号时执行.

process:

要执行的进程. 可以带参数,如果 process 域以一个‘+’开头, init 不会在utm和wtmp文件中为此进程记帐.

下面以RedHat9的inittab文件内容为例,做具体说明。

#

# inittab This file describes how the INIT process should set up

# the system in a certain run-level.

#

# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>

# 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) //多用户模式,无NFS功能。

# 3 - Full multiuser mode //完整多用户模式

# 4 - unused

# 5 - X11 //完整多用户模式,启动X11

# 6 - reboot (Do NOT set initdefault to this) //重启

#

id:3:initdefault: //默认以3级别启动

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit //系统引导期间执行rc.sysinit,忽略启动级别

l0:0:wait:/etc/rc.d/rc 0 //以0级别启动时,用0参数执行rc

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

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now//系统启动时按下Ctrl+Alt+Delete时执行的程序

# 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 runlevels //分配tty终端给虚拟控制台

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

# Run xdm in runlevel 5

x:5:respawn:/etc/X11/prefdm -nodaemon 


http://dato0123./blog/1248254

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多