Linux的run-level:
0:halt 关机
1:single user mode 单用户模式
2:multi-user without Network 不支持网络的多用户模式
3:full multi-user mode 完整的多用户模式
4:unused 保留
5:X x window模式
6:reboot 重新启动
/etc/inittab之中定义了开机之后的run-level以及其他有关启动的设定,在inittab之中有一个基本的语法:
[id]:[run-levels]:[action]:[process]
[id]是一个代号,最好不要超过4个字符,超过了大部分版本的解释器不支持。
[run-levles]是运行的级别,可以指定多个级别,比如2345表示在2,3,4,5级别都执行。
[action]init的行动,有以下几种:
respawn:
表示process如果terminate结束后会被重新启动,好比mingetty,用户logout之后会重新启动一个mingetty等待用户login。
wait:
这种process只会启动一次,并且init会等待process结束。
once:
这种process只会启动一次,init不会等待process结束。
boot:
启动时运行,run-levels会被忽略
bootwait:
同boot,而且init会等待process的结束,好像/etc/rc
off:
什么也不做
ondemand:
特定的run-level执行,可能是a,b,c之类。(没有试过,不知道怎么用。)
initdefault:
启动后要进入的run-level
sysinit:
启动时运行,会在boot和bootwait的process之前运行,忽略run-levels
powerwait
电源错误时候,init会等待这个process结束
powerfail
电源错误时候运行
powerokwait
电源恢复时候运行,init会等待这个process结束
powerfailnow
电源(UPS)即将没电时执行
ctrlaltdel:
顾名思义,CTRL+ALT+DEL的处理
kbrequest:
指定的键盘热键的处理,可以在自己的keymaps之中指定热键,指定后要loadkeys一下。
[process]
要执行的程序包括脚本,如果以+开始,表示init不会为process做utmp和wtmp的工作。
以下是我电脑之中的/etc/inittab:
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, < [email protected]>
# 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)
#
# 这里使用initdefault指定系统启动后进入的run-level
id:5:initdefault:
# 这里使用sysinit来指定系统初始化的脚本,可以指定为其他脚本
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
# 每个run-level自己的初始化脚本
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
# 处理 CTRL-ALT-DELETE
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# 处理powerfail事件
# 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"
# 处理powerokwait事件
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# 定义虚拟控制台tty,2-5都有6个text的控制台,用的是respawn,每次logout后init又会
# 产生一个新的mingetty进程
# 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
# 如果run-level = 5,定义x window控制器
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
0:halt 关机
1:single user mode 单用户模式
2:multi-user without Network 不支持网络的多用户模式
3:full multi-user mode 完整的多用户模式
4:unused 保留
5:X x window模式
6:reboot 重新启动
/etc/inittab之中定义了开机之后的run-level以及其他有关启动的设定,在inittab之中有一个基本的语法:
[id]:[run-levels]:[action]:[process]
[id]是一个代号,最好不要超过4个字符,超过了大部分版本的解释器不支持。
[run-levles]是运行的级别,可以指定多个级别,比如2345表示在2,3,4,5级别都执行。
[action]init的行动,有以下几种:
respawn:
表示process如果terminate结束后会被重新启动,好比mingetty,用户logout之后会重新启动一个mingetty等待用户login。
wait:
这种process只会启动一次,并且init会等待process结束。
once:
这种process只会启动一次,init不会等待process结束。
boot:
启动时运行,run-levels会被忽略
bootwait:
同boot,而且init会等待process的结束,好像/etc/rc
off:
什么也不做
ondemand:
特定的run-level执行,可能是a,b,c之类。(没有试过,不知道怎么用。)
initdefault:
启动后要进入的run-level
sysinit:
启动时运行,会在boot和bootwait的process之前运行,忽略run-levels
powerwait
电源错误时候,init会等待这个process结束
powerfail
电源错误时候运行
powerokwait
电源恢复时候运行,init会等待这个process结束
powerfailnow
电源(UPS)即将没电时执行
ctrlaltdel:
顾名思义,CTRL+ALT+DEL的处理
kbrequest:
指定的键盘热键的处理,可以在自己的keymaps之中指定热键,指定后要loadkeys一下。
[process]
要执行的程序包括脚本,如果以+开始,表示init不会为process做utmp和wtmp的工作。
以下是我电脑之中的/etc/inittab:
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, < [email protected]>
# 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)
#
# 这里使用initdefault指定系统启动后进入的run-level
id:5:initdefault:
# 这里使用sysinit来指定系统初始化的脚本,可以指定为其他脚本
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
# 每个run-level自己的初始化脚本
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
# 处理 CTRL-ALT-DELETE
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# 处理powerfail事件
# 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"
# 处理powerokwait事件
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# 定义虚拟控制台tty,2-5都有6个text的控制台,用的是respawn,每次logout后init又会
# 产生一个新的mingetty进程
# 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
# 如果run-level = 5,定义x window控制器
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon