init进程
2017-01-16
init进程是内核在完成引导过程之后创建的第一个用户空间进程(哪个空间进程是在哪里决定的?代码段在哪?)。在一个运行中的Linux系统中,每个进程都会和另外某个进程之间存在父子关系。init是Linux系统中所有用户空间进程的最终父进程。此外,init提供了一组默认的环境参数,比如初始的系统路径PATH,而所有其他进程都会继承这组参数。
init的主要功能是根据一个特定的配置文件生成其他进程。这个配置文件通常是指/etc/inittab(没找到啊?)。init有运行级别(runlevel)的概念,可以将运行级别看作系统状态。每个运行级别是由进入这个级别时所运行的服务和生成的程序决定的。
任意时刻,init只能运行于一中运行级别之中(这是说init可以在8中运行级别间切换?)。init使用的运行级别为0~6,以及一个被称为S的特殊运行级别。运行级别0命令init终止系统,而运行级别6则会重启系统。每个运行级别一般都有一组相关的启动和关闭脚本,它们定义了系统处于这个运行级别时的动作和行为。配置文件/etc/inittab决定了系统处于某个运行级别时所执行的动作。
Linux发行版中常用的运行级别及其作用:
运行级别 | 作用 |
---|---|
0 | 系统关机(终止) |
1 | 单用户系统配置,用于维护 |
2 | 用户自定义 |
3 | 通用的多用户配置 |
4 | 用户自定义 |
5 | 多用户配置,启动后进入图形界面 |
6 | 系统重启 |
运行级别对应的脚本
与运行级别相关的脚本文件一般位于目录/etc/init.d中
运行级别是由它所启动的服务定义的。与运行级别相关目录一般是/etc/rcN.d,一般一个运行级别对应一个目录,目录中包含每个运行级别的启动和关闭脚本。init只是在进入和退出一个运行级别时执行这些脚本。这些脚本定义了系统状态,而inittab则是告诉init某个运行状态和哪些脚本相关联。
每个/etc/rcN.d目录都包含大量的符号链接,它们按照特定的顺序排列(也按照顺序启动脚本)。这些符号链接的名字以K或S开头。以S开头的符号链接指向启动时(进入这个运行级别)执行的服务脚本,以K开头的符号链接指向关闭时(退出这个运行级别)执行的服务脚本。
需要找个例子分析下........
inittab脚本
init配置文件中定义了一个顶层的脚本,它负责执行这些启动和关闭服务的脚本,这个顶层脚本就是inittab。