Linux教程
Linux目录
Linux命令
Linux用户
Linux文件
Linux进程
Linux查询
Linux I/O
Linux正则
Linux安全
Linux shell
Linux网络
Linux VI
Linux 系统命令
Linux 其他

Linux init

init

它是系统启动过程中内核执行的第一个进程。它是一个守护进程,一直运行到系统关闭。这就是为什么,它是所有进程的父进程。首先,init读取存储在/etc/inittab文件中的脚本。命令init读取初始配置脚本,它基本上负责系统在系统初始化时所做的一切,例如设置时钟、初始化串行端口等。
通过读取此文件,init 确定系统应该如何在每个运行级别中设置并设置默认运行级别。
在确定系统的默认运行级别后,init 启动运行系统所需的所有后台进程。首先,它运行每个带有停止参数的终止脚本(它们的文件名以 K 开头)。然后它运行所有启动脚本(它们的文件名以 S 开头)以启动所有服务和应用程序。

运行级别

运行级别是 Linux 系统的一种软件配置,它只允许选定的一组进程存在。它定义了系统上运行的服务。
运行级别由数字标识。 init 可以处于八个运行级别之一。它由特权用户运行 telinit, 更改,该用户向 init 发送适当的信号以更改运行级别。
运行级别 功能
0 暂停系统
1 单用户模式
2 无需联网的多用户模式
3 带网络的多用户模式
4 未使用
5 具有网络和 X 窗口的多用户
6 重启系统
S/s 不直接使用
0,1 和 6 是保留的运行级别。 运行级别 S 或 s 相同。 7-9 也是有效的运行级别,虽然它们没有被记录为传统的 Unix 变体,但不要使用它们。但它们与运行级别 S 或 s 相同。它们是别名。

改变运行级别

改变运行级别的方法有很多种。要永久进行更改,请更改文件 /etc/inittab 中的默认级别。
在所有进程之后,init 等待其中一个后代进程死亡,用于电源故障信号。或者等到 telinit 发出信号来更改运行级别。当上述情况发生时,它会重新检查/etc/inittab 文件。可以随时将新条目添加到此文件中。
当 init 未处于单用户模式并接收到电源故障信号(SIGPWR) 时,它读取文件/etc/powerstatus。根据该文件的内容,init启动一个命令:
F(失败)?当电源出现故障时,UPS 提供电源。执行 powerfail 和 powerwait 条目。 O(好)?电源已恢复,执行 powerokwait 条目。 L(低)?电源正在降级,UPS 电池电量不足,执行 powerfailnow 条目。
如果文件/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 以执行相应的功能。
参数如下,每个参数一个字符:
参数 功能
0,1,2,3,4,5,6 切换到指定的运行级别
a,b,c 仅处理 /etc/inittab 中具有运行级别 a、b、c 的文件条目。
Q 或 q 重新检查文件/etc/inittab
S 或 s 切换到单用户模式
U 或 u init 重新执行自身。不会发生重新检查,运行级别应该来自 S,s,1,2,3,4,5 否则请求将被静默忽略。
发送信号 SIGTERM 和 SIGKILL 之间的默认等待时间是 5 秒,但是 telinit 也可以要求 init 使用选项 init 更改此时间strong>-t sec.
只有具有适当权限的用户才能执行telinit。
init二进制文件通过进程ID检查是init还是telinit,init的进程ID总是1、所以也可以使用init 而不是 telinit 作为快捷方式。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4