在使用 SysV init 运行级别的系统上,例如森托斯5,当操作系统启动时,它是否直接进入定义的运行级别/etc/inittab
?
如果我使用以下命令更改运行级别,init
是否会执行当前运行级别的终止脚本,然后执行新运行级别的启动脚本?
例如,如果我处于运行级别 3 并输入init 1
,是否会执行 中的终止脚本/etc/rc.d/rc3.d
,然后进入运行级别 1 后是否会运行 中的启动脚本/etc/rc.d/rc1.d
?
答案1
是的,SysVinit 在启动时直接进入所选的运行级别,而无需查看其他级别的脚本。您可以使用命令查看运行级别历史记录runlevel
。首次启动时,它将显示“以前的”运行级别为“N”。运行级别更改后,它将显示之前和当前的运行级别。
当切换运行级别时,它首先查看它们之间的差异。首先使用终止脚本终止当前级别中列出但新级别中未列出的任何服务,然后运行新级别中列出但旧级别中未列出的任何服务。两个运行级别中存在的服务都不会受到影响。
例如,从运行级别 3 切换到 5 通常会导致一些东西(如显示管理器)启动,但不会杀死任何东西。从 5 切换到 1 将导致相当多的东西被杀死,然后可能会运行 1(如单个用户界面控制台管理器)。