为什么 /etc/rc.d/rc{0,6}.d 中存在以“S”开头的脚本?

为什么 /etc/rc.d/rc{0,6}.d 中存在以“S”开头的脚本?

为什么 中有以 'S' 开头的脚本/etc/rc.d/rc{0,6}.d?如果我将 'S' 改为 'K' 会有麻烦吗?

系统停止/重启时其行为会改变吗?

答案1

是的,传统的系统 V init 样式(即)会创建以 S 或 K 开头的符号链接。以 S 开头的符号链接表示“启动”,当进入该运行级别时,它们会使用“start”参数运行。以 K 开头的符号链接表示“终止”,当进入该运行级别时,这些服务会使用“stop”参数运行。这使得不同的运行级别会运行不同的服务集。如果您将一个运行级别从 S 更改为 K,则服务器不会启动,而是会停止。这可能是也可能不是问题,具体取决于它是否是关键服务。

顺便说一句,这种方法已经被较新的 Linux 发行版中基于依赖关系的启动系统所淘汰。

答案2

我在另一个网站上找到的最佳答案是,在运行级别 0 和 6 上,K 和 S 会被忽略,因为系统无论如何都会按照字母数字顺序使用停止命令执行所有这些脚本……所以 S 或 K 甚至不重要。

我可以在 Ubuntu 的默认安装中证明这一点,其中我有如下示例:

K20restsrv K20zfs-挂载 K20zfs-共享

S31umountnfs.sh S40umountfs S60umountroot S90halt

K 示例的脚本中包含停止命令。脚本还指定了启动和停止命令运行时的默认运行级别,例如,它显示了运行级别 2、3、4、5 上的默认启动以及运行级别 0、1、6 上的默认停止

相关内容