当内核加载并执行 init 进程时,它是否会以自上而下的方式读取 /etc/inittab 文件,即按照文件中出现的每一行执行。
如果是这样,并且根据我的阅读和理解,这是否意味着它进入记录的运行级别,然后启动 sysinit 进程或反之亦然?
例如我见过的常见例子是
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
答案1
首先,请注意的格式inittab
如下:
Identifier:RunLevel:Action:Command
这里的关键点是runlevel
。给出以下示例代码:
a:3::
b:123::
c:23::
d:123::
e:23::
那么各个ID的执行顺序从runlevel
1开始是:
init 1: b d
init 2: c e
init 3: a
overall: b d c e a
如你所见,它将按照文件中列出的顺序运行它们,按运行级别分组!另外请记住,如果标识符不在指定的运行级别中,它将发出一个SIGTERM
,然后发出一个SIGKILL
。
答案2
它不是按任何特定顺序处理的脚本。它是一个配置文件,用于告诉系统针对特定事件或运行级别运行哪些脚本/命令。文件中条目的顺序没有区别,并且每个运行级别可以有多个脚本或命令。
第一行显示“id:3:initdefault:”告诉系统大多数情况下的默认运行级别为 3 => 多用户模式。
“si::sysinit:...”行告诉系统在系统初始化时(系统启动时运行)运行脚本 /etc/rc.d/rc/sysinit。
如果您使用 man inittab,您应该会得到该文件的所有选项的列表。