CentOS inittab 文件详解
一、inittab 文件
在 Linux 系统中,/etc/inittab
是初始化(init)进程使用的配置文件之一,该文件定义了系统默认的运行级别以及各运行级别下需要启动或停止的服务,虽然现代的 CentOS 版本更多使用 systemd 而不是 init 系统,但理解inittab
文件仍然对深入了解系统的启动过程非常有帮助。
二、inittab 文件内容解析
文件格式
/etc/inittab
文件中的每一行通常由四个字段组成,字段之间用冒号(:)分隔:
id:条目的唯一标识符,通常为一到四个字符。
runlevels:指定该条目在哪些运行级别生效,如果为空,表示在所有运行级别生效。
action:定义 init 对相应条目执行的操作,例如等待(wait)、重启(respawn)、执行一次(once)等。
process:要执行的命令或脚本。
示例分析
以下是一个典型的/etc/inittab
文件内容及其解释:
inittab is only used by upstart inittab is no longer used when using systemd ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM 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 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
2.1 id:3:initdefault:
id:id
用于唯一标识该配置项,这里设置为3。
runlevels:3
表示运行级别。
action:initdefault
表示这是系统的默认运行级别。
process: 无具体命令。
2.2 si::sysinit:/etc/rc.d/rc.sysinit
id:si
表示系统初始化。
runlevels:::
表示所有运行级别。
action:sysinit
表示执行系统初始化命令。
process:/etc/rc.d/rc.sysinit
是实际执行的脚本,负责系统初始化工作。
2.3 l0:0:wait:/etc/rc.d/rc 0
id:l0
表示标签。
runlevels:0
表示运行级别0。
action:wait
表示等待该命令执行完毕。
process:/etc/rc.d/rc 0
是运行级别0要执行的脚本。
2.4 ca::ctrlaltdel:/sbin/shutdown t3 r now
id:ca
表示捕获特定的按键组合。
runlevels:::
表示所有运行级别。
action:ctrlaltdel
表示按下 Ctrl+Alt+Delete 时执行。
process:/sbin/shutdown t3 r now
是执行的命令,三秒后重启系统。
2.5 pf::powerfail:/sbin/shutdown f h +2 "Power Failure; System Shutting Down"
id:pf
表示电源故障。
runlevels:::
表示所有运行级别。
action:powerfail
表示电源故障时执行。
process:/sbin/shutdown f h +2 "Power Failure; System Shutting Down"
是执行的命令,两分钟后关闭系统。
2.6 PR:12345:powerokwait:/sbin/shutdown c "Power Restored; Shutdown Cancelled"
id:pr
表示电源恢复。
runlevels:12345
表示特定的运行级别。
action:powerokwait
表示电源恢复时取消关机。
process:/sbin/shutdown c "Power Restored; Shutdown Cancelled"
是执行的命令,取消关机操作。
2.7 1:2345:respawn:/sbin/mingetty tty1
id:1
表示标签。
runlevels:2345
表示特定的运行级别。
action:respawn
表示重新启动进程。
process:/sbin/mingetty tty1
是实际执行的命令,管理虚拟终端。
2.8 x:5:respawn:/etc/X11/prefdm nodaemon
id:x
表示图形界面。
runlevels:5
表示运行级别5。
action:respawn
表示重新启动进程。
process:/etc/X11/prefdm nodaemon
是实际执行的命令,启动图形界面。
三、运行级别说明
CentOS支持多个运行级别,每个运行级别对应不同的系统状态:
0:停机(不要将默认运行级别设置为0)。
1:单用户模式,用于维护,禁止远程登录。
2:多用户模式,没有NFS。
3:完全多用户模式,有NFS,命令行界面。
4:未使用,用户自定义。
5:多用户模式,有图形界面。
6:重新启动(不要将默认运行级别设置为6)。
四、设置默认运行级别
在 CentOS 7 及以后的版本中,默认不再使用 inittab 文件来管理系统运行级别,而是使用 systemd,以下是如何使用 systemd 设置默认运行级别:
查看当前默认目标(相当于运行级别) systemctl getdefault 设置默认目标为 multiuser.target(相当于运行级别3) sudo systemctl setdefault multiuser.target 设置默认目标为 graphical.target(相当于运行级别5) sudo systemctl setdefault graphical.target
五、FAQs
Q1:如何更改 CentOS 的默认运行级别?
A1:对于 CentOS 7 及更高版本,可以使用以下命令更改默认运行级别:
sudo systemctl setdefault multiuser.target # 切换到命令行模式(运行级别3) sudo systemctl setdefault graphical.target # 切换到图形界面模式(运行级别5)
对于 CentOS 6 及更早版本,可以编辑/etc/inittab
文件,修改id:3:initdefault:
行的3
为其他运行级别。
Q2:如何在 CentOS 中添加启动服务?
A2:在 CentOS 7 及更高版本中,使用systemctl
命令管理服务:
启用服务(开机自启) sudo systemctl enable SERVICE_NAME 禁用服务(取消开机自启) sudo systemctl disable SERVICE_NAME 立即启动服务 sudo systemctl start SERVICE_NAME 立即停止服务 sudo systemctl stop SERVICE_NAME
在 CentOS 6 及更早版本中,可以通过创建符号链接的方式添加启动服务:
创建符号链接到 /etc/rc.d/rc.local 或其他启动脚本中 ln s /path/to/service /etc/rc.d/rc.local