22.1.2 init和运行级

本文介绍了Linux系统中的运行级概念,包括各个运行级所代表的系统状态及如何通过配置文件inittab来设置默认运行级。此外,还讲解了如何通过执行特定目录下的脚本来改变运行级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

22.1.2  init和运行级

init定义了一些被称做“运行级”的东西,这里的“级”是级别的意思,用一些整数表示。进入某一个运行级意味着使用某种特定的系统资源组合。“系统资源”是一个很宽泛的概念,由于几乎所有的进程都是由init创建的,因此理论上可以完全控制在某个运行级下应该运行哪些进程。从某种意义上,init的运行级有点快餐店里“套餐”的味道,顾客可以说“来一份1号套餐”,于是服务员就端上汉堡、薯条和可乐。

Linuxinit进程总共支持10个运行级,但实际定义的运行级只有7个。表22.1显示了这些运行级及其对应的系统状态。

22.1  运行级及其对应的系统状态

   

0

系统关闭

1S

单用户模式

2

功能受限的多用户模式

3

完整的多用户模式

4

一般不用,留作用户自己定义

5

多用户模式,运行X窗口系统

6

重新启动

 

目前绝大部分的Linux发行版本默认都启动计算机至运行级5,也就是带有X窗口系统的多用户模式。服务器通常不需要运行X,因此常常被设置进入运行级3。运行级4被保留,方便管理员根据实际情况定义特殊的系统状态。

单用户模式是关于系统救援的。在这个运行级下,所有的多用户进程都被关闭,系统保留最小软件组合。引导系统进入单用户模式后,系统会要求用户以root身份登录到系统中。在2.4节提到的“救援模式”就是典型的单用户模式。

06是两个比较特殊的运行级,系统实际上并不能停留在这两个运行级中。进入这两个运行级别意味着关机和重启。使用telinit命令可以强制系统进入某个运行级。运行下面这条命令后,系统就进入运行级6,也就是关闭计算机,然后再启动。

 

sudo telinit 6

 

尽管表22.1明确地列出了所有7个运行级代表的系统状态,但事实上这只代表了大部分系统的习惯做法。在某一台特定的计算机上,管理员可能会根据实际情况调整配置:例如让运行级3也能启动X窗口系统。init的配置文件是/etc/inittab,这个文件中定义了每个运行级上需要做的事情。下面是opensuse Linuxinittab文件的一部分。

 

# runlevel 0  is  System halt   (Do not use this for initdefault!)

# runlevel 1  is  Single user mode

# runlevel 2  is  Local multiuser without remote network (e.g. NFS)

# runlevel 3  is  Full multiuser with network

# runlevel 4  is  Not used

# runlevel 5  is  Full multiuser with network and xdm

# runlevel 6  is  System reboot (Do not use this for initdefault!)

#

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

 

以“#”开头的行是注释行,紧跟在后面的这些行定义了在每个运行级下应该做的事情。inittab文件通常并不会一一列出所有应该执行的脚本,而是调用rc脚本(通常是/etc/init.d/rc)改变运行级。rc脚本随后根据传给它的参数查找与运行级有关的目录,并执行其中的脚本。

这些“与运行级有关”的目录总是以rclevel.d的形式出现,其中level就是运行级编号。例如所有要在运行级1下执行的脚本都保存在rc1.d目录下,而为了进入运行级3,那么就执行位于rc3.d目录下的脚本。通常,这些目录不是在/etc目录下,就是在/etc/init.d目录下。

 

$ ls -d /etc/rc*                        ##列出/etc目录下所有以rc开头的目录

/etc/rc0.d  /etc/rc1.d  /etc/rc2.d  /etc/rc3.d  /etc/rc4.d  /etc/rc5.d  /etc/rc6.d  /etc/rcS.d

 

很显然,为了改变某个运行级所使用的系统资源组合,可以在这些目录下添加/删除相应的脚本。rclevel.d目录下的脚本文件有自己一套独特的命名和实现方法,将在22.1.3节讨论。

很容易改变Linux的默认运行级。在/etc/inittab文件中找到下面这一行:

 

id:5:initdefault:

 

这一行设置将Linux默认启动到运行级5。如果要让Linux默认启动到运行级3,可以把它改成下面这样:

 

id:3:initdefault:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值