init2024 年 8 月 29 日 | 阅读 3 分钟 它是内核在系统启动时执行的第一个进程。它是一个守护进程,一直运行到系统关闭。因此,它是所有进程的父进程。首先,init 读取存储在 /etc/inittab 文件中的脚本。init 命令读取初始配置文件,该文件基本上负责系统初始化时执行的所有操作,如设置时钟、初始化串行端口等。 通过读取此文件,init 确定系统在每个运行级别应如何设置,并设置默认运行级别。 确定系统的默认运行级别后,init 启动运行系统所需的所有后台进程。首先,它运行每个 kill 脚本(文件名以 K 开头),并带有一个 stop 参数。然后,它运行所有 start 脚本(文件名以 S 开头)以启动所有服务和应用程序。 运行级别运行级别是 Linux 系统的软件配置,它只允许选定的一组进程存在。它定义了系统中运行的服务。 运行级别由数字标识。init 可以处于八个运行级别之一。它由特权用户通过运行 telinit 来更改,telinit 会向 init 发送相应的信号来更改运行级别。
更改运行级别有许多方法可以更改运行级别。要使更改永久生效,请在 /etc/inittab 文件中更改默认级别。 在所有进程之后,init 等待其某个子进程死亡,等待电源故障信号。或等待直到 telinit 发出信号更改运行级别。当上述条件发生时,它会重新检查 /etc/inittab 文件。可以随时向此文件添加新条目。 当 init 不处于单用户模式并收到电源故障信号 (SIGPWR) 时,它会读取 /etc/powerstatus 文件。根据该文件的内容,init 会启动一个命令
如果文件 /etc/powerstatus 不存在或包含 F、O、L 以外的任何内容,则 init 的行为就好像它读取了字母 F。 要与 init 交互,应使用 /dev/initctl 控制通道,而不是 SIGPWR 和 /etc/powerstatus。 当向 init 发送更改运行级别的请求时,init 会向新运行级别中所有未定义的进程发送警告信号 SIGTERM。然后等待 5 秒钟,之后通过 SIGKILL 强制终止进程。 所有这些进程都应保留在 init 创建的同一进程组中,否则它们将无法接收这些信号,并且需要单独终止。 Telinit/sbin/telinit 与 /sbin/init 链接。Telinit 接受一个参数并向 init 发送信号以执行相应的功能。 参数如下,每个参数为单个字符
默认情况下,在发送 SIGTERM 和 SIGKILL 信号之间等待的时间为 5 秒,但 telinit 也可以使用 -t sec 选项要求 init 更改此时间。 只有具有适当权限的用户才能执行 telinit。 init 二进制文件通过进程 ID 检查它是 init 还是 telinit,init 的 进程 ID 始终为 1。 因此,也可以使用 init 而不是 telinit 作为快捷方式。 下一主题Linux Nano 编辑器 |
我们请求您订阅我们的新闻通讯以获取最新更新。