Skip to content

Latest commit

 

History

History
149 lines (113 loc) · 5.1 KB

man-5-inittab.md

File metadata and controls

149 lines (113 loc) · 5.1 KB

###man 5 inittab

这篇文档基本是从'man 5 inittab'中翻译过来的。

INITTAB(5)

NAME inittab - 被sysv兼容的init进程所使用的inittab文件的格式。

DESCRIPTION inittab文件描述了在系统启动和正常运行的过程中,需要启动哪 些进程(e.g. /etc/init.d/boot, /etc/init.d/rc, gettys...)。 init可以区分多个不同的运行级别,每个运行级别包括他自己需要启动 的一个进程的集合。表项包括0-6以及ondemand表项A,B和C。一个在inittab 中表项符合下面的格式: id:runlevels:action:process 以#开头的行被忽略掉;

id - 是一个文件中独一无二的字符序列,它由1-4个字符组成,标

识了inittab中的一个表项; 注意:传统的,getty和其他登录程序会采用其所使用的tty的后缀 来作为标识,例如1是tty1;

runlevels - 指定了应该在哪些runlevel运行该表项;

action - 描述了应该采取什么措施;

process - 指定哪个进程应该被执行。如果process域以一个'+'号

开头,那么utmp和wtmp程序将不会对该进程进行统计。这对于那些坚持 要自己做utmp和wtmp统计的gettys来说是必需的。这同样是历史上遗留 的bug;

runlevels会包含多个表示不同runlevel的字符;例如,123表示进

程应该在123 runlevel启动。对于ondemand表项可以包括A,B和C。sysinit, boot以及bootwait表项的runlevels域被忽略掉了。

当系统的runlevel改变的时候,任何没有在新的runlevel中指定的

进程都会被杀死,现发送SIGTERM信号,然后发送SIGKILL信号。

有效的action域如下:

respawn
	不管什么时候,只要进程终止就会被重启,例如getty;

wait
	一旦进入到指定的runlevel,进程就会被启动,并且init进程
会等待它的结束;

once
	进程只会在进入到指定的runlevel时运行一次;

boot
	进程只会在系统启动的时候执行,runlevels域被忽略;

bootwait
	进程只会在系统启动的时候执行,init会等待它的终止,例如
/etc/rc。runlevel域被忽略;

off
	什么也不做;

ondemand
	一个被标记为ondemand runlevel的进程将会在任何指定ondemand
runlevel被调用时执行,然而不会进行任何runlevel的切换。ondemand
runlevel的级别为a,b和c;

initdefault
	initdefault表项指定了在系统启动后应该进入到哪一个runlevel;
如果这样的表项不存在的话,init将会在console上面询问要进入到哪一
个runlevel;process域被忽略掉;

sysinit
	进程将会在系统的启动过程中执行;它将会在所有的boot和bootwait
的表项在执行前执行;runlevels域被忽略掉了;

powerwait
	当电源断电(go down)时,相应的进程被执行;init通过一个进程
告知UPS(不间断电源)电源连接到这台计算机上获得通知;init在继续
执行前会等待这个进程的完成;

powerfail
	和powerwait一样,只不过是powerfail不会等待进程的执行结束;

powerokwait
	当init进程接到通知电源已经恢复,进程会立即被执行;

powerfailnow
	当init进程被告知UPS电量已经为空,并且电源已经失效,这时进程
会立即被执行;

ctrlaltdel
	当init进程接收到SIGINT信号时,进程会立即被执行;这就意味着系
统中某个用户在系统的console,按下了组合键CTRL+ALT+DEL;通常的操作
是执行某些类型的shutdown,切换到单用户模式或者是重启;

kbrequest
	当init进程接收到来自键盘处理函数的一个信号,这个信号是某个用
户在console下按下了系统特殊的组合键,进程就会被执行;

EXAMPLES 下面是一个inittab的例子,它有点像旧版本的Linux中的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文件在系统启动的过程中执行/ect/rc,然后在tty1 - tty4上

启动gettys。

下面是一个有着不同runlevel的更精细的inittab:

	# LEVEL to run in
	id:2:initdefault:

	# Boot-time system configuration/initialization script
	si::sysinit:/etc/init.d/rcS

	# What to do in single user mode
	~:S:wait:/sbin/sulogin

	# /etc/init.d executes S and K scripts upon change
	# of runlevel
	# Runlevel 0 is halt
	# Runlevel 1 is singgle user mode
	# Runlevel 2-5 is multi-user mode
	# Runlevel 6 is reboot
	l0:0:wait:/etc/init.d/rc 0
	l1:1:wait:/etc/init.d/rc 1
	l2:2:wait:/etc/init.d/rc 2
	l3:3:wait:/etc/init.d/rc 3
	l4:4:wait:/etc/init.d/rc 4
	l5:5:wait:/etc/init.d/rc 5
	l6:6:wait:/etc/init.d/rc 6

	# What to do at "3 finger salute"
	ca::ctrlaltdel:/sbin/shutdown -t1 -h now

	# Runlevel 2,3: gettty on virtual consoles
	# Runlevel 3: getty on terminal(ttyS0) and modem(ttyS1)
	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
	S0:3:respqwn:/sbin/getty -L 9600 ttyS0 vt320
	S1:3:respawn:/sbin/mgetty -x0 -D ttyS1