inittab中(4)
名称
init的inittab脚本
描述
文件/ etc / inittab控制进程调度init。通常派遣的init进程是守护进程。
所述的inittab文件由那些依赖位置和具有以下格式的条目:
id :rstate :action :process
每个条目都由换行符分隔; 但是,换行符前面的反斜杠(\)表示条目的继续。每个条目最多允许512个字符。可以使用sh(1)中描述的注释约定在过程字段中插入注释。inittab文件中的条目数没有限制(最大条目大小除外)。输入字段是:
- ID
- 用于唯一标识条目的一到四个字符。请勿使用字符“r”或“t”作为此字段中的第一个或唯一字符。这些字符保留用于rlogin(1)和telnet(1)。
- rstate
- 定义要处理此条目的运行级别。运行级别有效地对应于系统中的进程配置。也就是说,产生的每个进程都init被分配了一个允许存在的运行级别。运行级别由0到6之间的数字表示。例如,如果系统处于运行级别1,则仅处理在rstate字段中具有1的那些条目。
当init请求更改运行级别时,在目标运行级别的rstate字段中没有条目的所有进程都会发送警告信号,
SIGTERM
并允许5秒的宽限期,然后被kill信号强行终止SIGKILL
。该rstate字段可以通过从以任意组合选择多个运行级别限定用于处理多个运行级别0至6。如果未指定运行级别,则假定该进程在所有运行级别0到6中有效。还有三个其他值,a,b和c,它们可以出现在rstate字段中,即使它们不是真正的运行级别。只有当一个或多个进程请求它们运行时(无论系统的当前运行级别如何),才会处理在rstate字段中具有这些字符的条目。请参见init(1M)。这些与运行级别不同,因为它们永远不能进入运行级别a,b或c。此外,执行任何这些进程的请求不会更改当前运行级别。此外,一个过程由a,b开始inittelinitinit更改级别时不会终止或c命令init。只有当inittab中的行在操作字段中标记为off,它们的行完全从inittab中删除或进入单用户状态时,它们才会被终止。init
- action
- 该字段中的关键字说明init如何处理过程字段中指定的过程。承认的行动init如下:
- respawn
- 如果该过程不存在,则启动该过程; 不要等待它终止(继续扫描inittab文件),当进程终止时,重新启动进程。如果进程当前存在,则不执行任何操作并继续扫描inittab文件。
- wait
- 当init进入与条目的rstate匹配的运行级别时,启动该进程并等待其终止。当inittab文件init处于同一运行级别时,所有后续读取都会导致init忽略此条目。
- once
- 当init输入与条目的rstate匹配的运行级别时,启动该进程,不要等待其终止。当它死亡时,不要重新启动该过程。如果init进入新的运行级别并且该进程仍在从先前的运行级别更改运行,则不会重新启动该程序。
- boot
- 该条目仅在inittab文件init的引导时读取时处理。是开始这个过程而不是等待它终止; 当它死亡时,它不会重启该过程。为了使该指令有意义,rstate应该是默认值,或者必须在引导时匹配运行级别。此操作对于系统硬件重启后的初始化功能很有用。initinit
- bootwait
- init在系统启动后,该条目将在第一次从单用户状态转换为多用户状态时进行处理。(如果initdefault设置为2,则进程在引导后立即运行。)init启动进程,等待终止,当它终止时,不会重新启动进程。
- POWERFAIL
- 仅在init接收到电源故障信号时执行与此条目关联的过程
SIGPWR
(参见信号(3C))。 - powerwait
- 仅在init接收到电源故障信号时执行与此条目关联的进程
SIGPWR
,并等待它终止,然后再继续处理inittab。 - off
- 如果与此条目关联的进程当前正在运行,请发送警告信号
SIGTERM
并等待5秒,然后使用kill信号强制终止进程SIGKILL
。如果该进程不存在,请忽略该条目。 - ondemand
- 该指令实际上是respawn动作的同义词。它在功能上与respawn相同,但是给它一个不同的关键字,以便与运行级别离婚。该指令仅用于rstate字段中描述的a,b或c值。
- initdefault/默认运行级别
- 仅在init最初调用时才扫描具有此操作的条目。init使用此条目确定最初要输入的运行级别。它通过获取rstate字段中指定的最高运行级别并将其用作其初始状态来完成此操作。如果rstate字段为空,则将其解释为0123456并init进入运行级别6。这将导致系统循环(它将转到固件并连续重启)。此外,如果在inittab中init找不到initdefault条目,它会在重新引导时从用户请求初始运行级别。
- SYSINIT
- 在init尝试访问控制台之前(即,在Console Login:提示符之前)执行此类型的条目。预计此条目仅用于初始化 init可能尝试询问运行级别问题的设备。这些条目init在继续之前执行并等待完成。
- process
- 指定要执行的命令。整个过程字段的前缀exec,并传递到一个分叉sh为SH -c“EXEC command ”。因此,任何合法sh语法都可以出现在流程字段中。