“切换运行级别”到底是什么意思?

“切换运行级别”到底是什么意思?

当我发出sudo telinit n(n 是新的运行级别)时会发生什么?init扫描/etc/inittab和系统启动时的操作是否完全相同?例如,如果我有

rm:2345:wait:/etc/rc.multi

在我的 中inittab,我将运行级别从 5 更改为 3。它会/etc/rc.multi重新执行还是被跳过?

答案1

我对改变运行级别的理解是init“区分”新旧运行级别并启动/杀死状态将改变的服务。

在给定的示例中,/etc/rc.multi不会重新执行,因为它已在运行。如果您rm:45:wait:/etc/rc.multi在 中/etc/inittab,并从运行级别 5 -> 3 -> 5,/etc/rc.multi则会被终止(-> 3)然后启动(-> 5),因为它未针对运行级别 3 进行设置。

来自手册页

当 init 被要求更改运行级别时,它会向新运行级别中未定义的所有进程发送警告信号 SIGTERM。然后等待 5 秒钟,然后通过 SIGKILL 信号强制终止这些进程。

/etc/inittab按照您描述的方式重新扫描:

在生成所有指定进程后,init 将等待其子进程之一终止、电源故障信号或直到 telinit 发出信号更改系统的运行级别。当上述三种情况之一发生时,它会重新检查 /etc/inittab 文件。可以随时将新条目添加到此文件。但是,init 仍会等待上述三种情况之一发生。

相关内容