1.inittab定义与位置
系统启动时,会运行init程序。启动init程序时,init程序会去读取/etc/inittab文件,根据/etc/inittab中设置的数据进行系统初始化的工作。
inittab位置是/etc/inittab。
2.运行级别
0 --停机
1 --单用户模式,用于root用户对系统进行维护
2 --多用户模式,在此模式下不能使用nfs
3 --完全多用户模式,主机作为服务器使用时通常在此运行级别
4 --未分配使用
5 --图形登录的多用户模式,用户在该模式下可进行图形界面操作
6 --重新启动
3.inittab文件示例
[root@www ~]# vim /etc/inittab
id:5:initdefault: <==预设的 runlevel 设定, 此 runlevel 为 5
si::sysinit:/etc/rc.d/rc.sysinit <==准备系统软件执行的环境的脚本执行档
# 7 个不同 run level 的,需要启动的服务的 scripts 放置路径:
l0:0:wait:/etc/rc.d/rc 0 <==runlevel 0 在 /etc/rc.d/rc0.d/
l1:1:wait:/etc/rc.d/rc 1 <==runlevel 1 在 /etc/rc.d/rc1.d/
l2:2:wait:/etc/rc.d/rc 2 <==runlevel 2 在 /etc/rc.d/rc2.d/
l3:3:wait:/etc/rc.d/rc 3 <==runlevel 3 在 /etc/rc.d/rc3.d/
l4:4:wait:/etc/rc.d/rc 4 <==runlevel 4 在 /etc/rc.d/rc4.d/
l5:5:wait:/etc/rc.d/rc 5 <==runlevel 5 在 /etc/rc.d/rc5.d/
l6:6:wait:/etc/rc.d/rc 6 <==runlevel 6 在 /etc/rc.d/rc6.d/
# 是否允许按下 [ctrl]+[alt]+[del] 就重新启动的设定项目:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# 底下两个设定则是关于不断电系统的 (UPS),一个是没电力时的关机,一个是复电的处理
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
1:2345:respawn:/sbin/mingetty tty1 <==其实 tty1~tty6 是由底下这六行决定的。
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
x:5:respawn:/etc/X11/prefdm -nodaemon <==X window 则是这行决定的!
4.inittab文件格式
label:runlevel:action:process
label是1~4个字符的标签,用来标示输入的值。一些系统只支持2个字符的标签。鉴于此原因,多数人都将标签字符的个数限制在2个以内。注意:像getty之类的登陆进程必须使label字段与tty编号一致,如tty1需要label处应该为1,许多老版本的登陆进程都遵循这种规则。
该标签可以是任意字符构成的字符串,但实际上,某些特定的标签是常用的,在Red Hat Linux中使用的标签是:
id --用来定义缺省的init运行的级别
si --是系统初始化的进程
ln --其中的n从1~6,指明该进程可以使用的runlevel的级别
ud --是升级进程
ca --指明当按下Ctrl+Alt+Del是运行的进程
pf --指当UPS表明断电时运行的进程
pr --是在系统真正关闭之前,UPS发出电源的信号时需要运行的进程
x --是将系统转入X终端时需要运行的进程
runlevels表示这一行适用于运行的级别(可以指定多个runlevel级别,也可以不为runlevel字段指定特定的值,表示在相应的运行级均需要运行);另外sysinit、boot、bootwait这三个进程会忽略这个设置值。
action表示进入对应的runlevels时,init应该运行process字段的命令的事件或者方式.
代码:
boot 在系统启动时运行,忽略runlevel
bootwait 在系统启动时运行,init等待进程完成。忽略runlevel
ctrlaltdel 当Ctrl+Alt+Del三个键同时按下时运行,把SIGINT信号发送给init。忽略 runlevel
initdefault 不要执行这个进程,它用于设置默认runlevel
kbrequest 当init从键盘中收到信号时运行。这里要求键盘组合符合KeyBoardSigral(参见/usr/share/doc/kbd-*关于键盘组合的文档)
off 禁止进入,因此该进程不运行
once 每一个runlevel级别运行一次
ondemand 当系统指定特定的运行级别A、B、C时运行
powerfail 当init收到SIGPWR信号时运行
powerokwait 当收到SIGPWD信号且/etc/文件中的电源状态包含OK时运行
powerwait 当收到SIGPWD信号,并且init等待进程结束时运行
respawn 不管何时终止都重新启动进程
sysinit 在运行boot或bootwait进程之前运行
wait 运行进程等待输入运行模式
process字段包含init执行的进程,该进程采用的格式与在命令行下运行该进程的格式一样,因此process字段都以该进程的名字开头,紧跟着是运行时要传递给该进程的参数。
5.runlevel control(rc)
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
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 按顺序执行以下的几个脚本( RC Scripts):
/etc/rc.d/rc.sysinit
/etc/rc.d/rc X
/etc/rc.d/rc.local
假如运行启动脚本l3:3:wait:/etc/rc.d/rc 3;这将运行目录/etc/rc.d/rc3.d中包含的所有脚本,这些脚本表示系统初始化时要启动的程序。
这一行表示以3为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受3作为参数,去执行/etc/rc.d/rc3.d/目录下的所有的rc启动脚本,/etc/rc.d/rc3.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。
/etc/rc.d/rc3.d目录下,都是一些连接文件,他们的名称格式是:S[数字][名字]或者K[数字][名字]。 S意思是启动,数字是顺序,K意思是停止。数字代表执行的顺序。名字代表服务的名称。rc0.d rc1.d rc2.d rc4.d rc5.d rc6.d 类同。
注意:/etc/rc.d/rc.local的调用是在/etc/rc.d/rcX.d/目录下的 S99local超连接。
6.tty
# Run gettys in standard runlevels
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 建立Linux提供的六个虚拟控制台。