Linux下inittab文件详解

/etc/inittab文件详解

Linux系统的启动过程为:加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动kernel-->启动init进程

我们看到,Linux系统启动的最后是启动init进程,而init进程是怎么工作的呢?init进程就是根据/etc/inittab这个文件来在不同的运行级别启动相应的进程或执行相应的操作。

/etc/inittab这个文件中定义的登记项都是以:隔开的四个段,即:

id:runlevels:action:process

id:它是每个登记项的标识符,用于唯一标识每个登记项,不能重复

runlevels:系统的运行级别,表示process的action要在哪个级别下运行,该段中可以定义多个运行级别,各级别之间直接写不用分隔符;如果为空,表示在所有的运行级别运行。Linux的运行级别有:

0:表示关机

1:表示单用户模式,在这个模式中,用户登录不需要密码,默认网卡驱动是不被加载,一些服务不能用。

2:表示多用户模式,NFS服务不开启

3,表示命令行模式

4,这个模式保留未用

5,表示图形用户模式

6,表示重启系统

action:表示对应登记项的process在一定条件下所要执行的动作。

具体动作有:

respawn:当process终止后马上启动一个新的

wait:当进入指定的runlevels后process才会启动一次,并且到离开这个runlevels终止

initdefault:设定默认的运行级别,即我们开机之后默认进入的运行级别,不能是0,6,你懂的

sysinit:系统初始化,只有系统开机或重新启动的时候,这个process才会被执行一次

powerwait:当init接收到电源失败信号的时候执行相应的process,并且如果init有进程在运行,会等待这个进程完成之后,再执行相应的process

powerfail:当init接收到电源失败信号的时候执行相应的process,并且如果init有进程在运行,不会等待这个进程完成,它会直接执行相应的process

powerokwait:电源已经故障,但是在等待执行对应操作的时候突然来电了就执行对应的process

powerfailnow:当电源故障并且init被通知UPS电源已经快耗尽执行相对应的process

ctrlaltdel:当用户按下ctrl+alt+del这个组合键的时候执行对应的process

boot:只有在引导过程中,才执行该进程,但不等待该进程的结束;当该进程死亡时,也不重新启动该进程

bootwait:只有在引导过程中,才执行该进程,并等待进程的结束;当该进程死亡时,也不重新启动该进程

off:如果process正在运行,那么就发出一个警告信号,等待20秒后,再通过杀死信号强行终止该process。如果process并不存在那么就忽略该登记项

once:启动相应的进程,但不等待该进程结束便继续处理/etc/inittab文件中的下一个登记项;当该进程死亡时,init也不重新启动该进程

process:表示启动哪个程序或脚本或执行哪个命令等

以redhat enterprise server 5.4为例。我们分析一下/etc/inittab文件:

行首为“#”的是注释行,没有作用

id:3:initdefault:

第一个字段为标识符,下面我们就不说了。这个登记项表示我们默认的运行级别是3,也就是说我们默认开机启动会进入命令行模式。

si::sysinit:/etc/rc.d/rc.sysinit

所所有的运行级别下,init依赖/etc/rc.d/rc.sysinit这个脚本对系统进行初始化。而/etc/rc.d/rc.sysinit的作用主要是:

1,激活udev和selinux

2,根据/etc/sysctl.conf文件设定内核参数

3,设定系统时钟

4,键盘的键映射,即识别键盘

5,启用swap分区

6,设定主机名

7,根文件系统检测及重新以读写方式挂载

8,激活RAID和LVM设备

9,启用磁盘配额

10,检测及挂载其他文件系统(挂载/etc/fstab中定义的设备)

11,清除过期的锁和PID文件

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

当进入n运行级(n就是上面所定义的运行级别),会把/etc/rc.d/rc*.d(*表示对应登记项process字段rc后的数字)这个目录中所有以S开头的文件启用,把以K开头的文件给禁用,并且这些文件只在进入相应的运行级别时执行一次,退出此运行级别失效。所以每个运行级别的服务是独立的,而/etc/rc.d/rc*.d这个目录中存放的是在对应级别下所要开启和禁用的服务的文件。

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

在所有运行级别下,按下ctrl+alt+del时等待3秒钟后重新启动系统。这就是为什么我们按下这三键后重新启动系统

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

在所有的运行级别下,如果电源故障,会给出提示信息,并且在2min后关机。

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

在12345运行级别下,如果电源故障的时候,电源又恢复正常,则给出提示信息,并且立即终止关机。

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

在2345运行级别下,会启用6个命令行界面的终端,并且一旦终端终止,就会在创建一个新的。这就是为什么我们的系统下会有6个命令行界面的终端。

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

只有我们进入5运行级别,会打开图形用户终端,并且一旦终端终止,就会再创建一个新的。你如果把这一行删了,你的图形界面还能用吗?你懂的

Thus on!你是不是对linux又了解了很多呀!come on!

还有一篇,原址如下:

http://www.linux178.com/linux/inittab.html

详解 /etc/inittab 文件

  • 作者:斯巴达克斯
  • 时间:January 4, 2014
  • 分类:Linux

当内核初始化后,就会启动第一个进程 init,init进程会进行一系列的系统初始化工作,init是根据什么来进行初始化的?

init 会读取/etc/inittab文件(针对CentOS 5 系列),执行里面的内容来进行初始化工作,这个文件是一定的格式。

获取inittab文件的帮助,输入 man inittab 命令

过滤掉空白行和以#号开始的行,内容如下:


[root@server1 ~]# egrep -v ‘^$|^#‘ /etc/inittab
id:3:initdefault:
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
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
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
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

其格式可以归纳为如下:

id:runlevels:action:process

id 用来定义在inittab文件唯一的条目编号,长度为 1-4个字符

runlevels 列出来运行的级别 为空则代表所有级别

action 要执行的动作

process 要执行的程序

id:3:initdefault:

id 就使用id本身来定义

3 就是列出的运行级别

initdefault

这个动作就是设定默认的运行级别,如果前面runlevels不指定运行级别,那么会在启动时在终端询问,这一行不需要process这一段

si::sysinit:/etc/rc.d/rc.sysinit

id 是 si 只是用来标识

runlevels 为空则代表的是 所有的运行级别

sysinit 是指在系统启动时执行后面的process(也就是/etc/rc.d/rc.sysinit)

/etc/rc.d/rc.sysinit 这是一个系统初始化脚本,这个脚本里面初始化很多的

该脚本的作用:

激活selinux和udev
根据/etc/sysctl.conf文件设置内核参数
设置系统时钟
装载键映射
启用交换分区
设置主机名
根文件系统检测并重新挂载其为读写;
激活RAID和LVM;
检查和挂载其它文件系统;/etc/fstab中定义;
清理操作

l0:0:wait:/etc/rc.d/rc 0

l0 就是标识这是0级别

0 就是动作是在0级别下发生

wait 是指在切换至0级别时执行后面的process(/etc/rc.d/rc 0),并且init进程会等待直到这些进程终止

/etc/rc.d/rc 0 这是一个脚本 后面的0 是传递进去的参数 ,传递进去0就代表着要执行/etc/rc.d/rc0.d/

下面所有的脚本首先执行K开头的脚本,然后执行S开头的脚本

这一行的意思就是当运行在0级别,就会执行/etc/rc.d/rc0.d/ 所有的脚本

K开头的脚本都是需要停止的

S开头的脚本都是需要启动的

后面跟的2位数数字是启动或者停止顺序

这里面大多数是K开头,是因为0级别本身就是关机的,所以都是要停止的,也有2个S开头 S00killall 这个脚本kill所有的没有关闭的进程,S01halt 是 用来关机的 所有才有此2个S开头的脚本

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

这几个跟上面如出一辙

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

ca id名称

runlevel留空 代表所有级别

ctrlaltdel 代表 ctrl+alt+delete

/sbin/shutdown -t3 -r now 执行重启命令

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

pf id名称

runlevel留空 代表所有级别

powerfail 当突然断电时执行

/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" 服务器在UPS前提下,当突然断电,服务器就会倒计时2分钟,进行关机

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

pr id名称

12345 也就是在12345级别下才会执行后面的动作

powerokwait 也就是上面的倒计时未结束(在2分钟之内)再来电,那么取消关机

/sbin/shutdown -c "Power Restored; Shutdown Cancelled" 取消关机

1:2345:respawn:/sbin/mingetty tty1

1 id名称

2345 也就是在2345级别下才会执行后面的动作

respawn 意思就是当后面的要执行的程序(/sbin/mingetty tty1) 终止了,init进程会自动重启该进程

/sbin/mingetty tty1 执行的程序

这一行大体意思就是 当虚拟终端进程结束了,init会自动再次打开虚拟终端,就是我们用SSH连接到服务器,退出时系统会打开一个登录的界面等待输入

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 id名称

5 后面的动作只是在5级别下运行

respawn 会自动重启后面的程序

/etc/X11/prefdm -nodaemon 这个是图形界面

这一行大体意思是 当图形化界面进程结束,会自动再打开图形化程序

原文地址:https://www.cnblogs.com/manzb/p/8718672.html

时间: 2024-10-14 13:45:20

Linux下inittab文件详解的相关文章

【转】linux中inittab文件详解

原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/inittab.inittab是一个不可执行的文本文件,它有若干行指令所组成. 理解Runlevel: runlevel用来表示在init进程结束之后的系统状态,在系统的硬

linux中inittab文件详解

init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/inittab.inittab是一个不可执行的文本文件,它有若干行指令所组成. 理解Runlevel: runlevel用来表示在init进程结束之后的系统状态,在系统的硬件中没有固定的信息来表示runlevel,它纯粹是一种软件结构.init和inittab是runlevel影响系统状态的唯一原因

Linux 下hosts文件详解

主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号. 公网:IP地址不方便记忆,所以又有了域名.域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名. 局域网:每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机名,以便于以容易记忆的方法来相互访问.比如我们在局域网中可以为根据每台机器的功用来为其命名. 主机名相关的配置文件:/etc/ho

Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

转载的 Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig 在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是

linux下scp命令详解

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp在网络上不同的主机之间复制文件,它使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件. scp命令基本格式: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o s

&lt;linux下sysctl指令详解&gt;

Sysctl指令是对系统核心参数的设置: 用法: -a 参数列出系统中所有核心设置 当然了这些核心的设置都是文件,存放于/proc/sys/net目录下. 举个有代表性的例子: net.ipv4.icmp_echo_ignore_all = 0      把所有的点改为 / 就可以了.   [[email protected] net]# net.ipv4.icmp_echo_ignore_all = 0 [[email protected] net]# cd ipv4/ [[email pro

linux 下跟文件系统详解

什么是根文件系统 根文件系统首先是一种文件系统,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行. 我们首先从主机上所安装的Linux操作系统中了解一些根文件系统的信息.比如在笔者工作的Linux桌面系统中可以得到下面的结果: # mount /dev/hda2 on / type ext3 (rw) none on /proc

linux下alias命令详解

linux下alias命令详解 用途说明 设置命令的别名.在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接" 解决长文件名的问题,但对于带命令行参数的命令,链接就无能为力了.而指定别名则可以解决此类所有问题[1].常用别名来简化 ssh登录[见示例三],使长命令变短,使常用的长命令行变短,强制执行命令时询问等. 功能说明 :设置指令的别名. 语 法:alias[别名]=[指令名称] 参 数 : 若不加任何参数,则列出目前所有的别名