/etc 中的 rc0.d,rc1.d,... 目录

/etc 中的 rc0.d,rc1.d,... 目录

我正在运行 Ubuntu,其中有目录/etc/rc0.d, /etc/rc1.d, /etc/rc2.d, ..., /etc/rc6.d

我的机器上的示例文件:

directory      example symlinks in the dir
------------------------------------------
/etc/rc1.d:    K76dovecot, K77ntp
/etc/rc2.d:    S23ntp, S24dovecot
/etc/rc3.d:    S23ntp, S24dovecot
/etc/rc4.d:    S23ntp, S24dovecot
/etc/rc5.d:    S23ntp, S24dovecot

问题:

  1. 多个“rc”目录的用途是什么?
  2. 为什么 Ubuntu 将 和 的副本安装dovecot到除和ntp之外的所有目录中?rc0.drc6.d
  3. 如果像上面那样多次指定它们,那么它们实际上会被执行多次吗?
  4. 从上面你能看出启动时按照什么顺序dovecot执行ntp吗?
  5. 告诉 Ubuntu在启动ntp之前始终执行的正确方法是什么?dovecot

答案1

正如其他人所指出的,答案就是运行级别这些基本上是操作系统的操作模式。在 Linux 上,这些通常是:

ID  Name                               Description
0   Halt                               Shuts down the system.
1   Single-user Mode                   Mode for administrative tasks.
2   Multi-user Mode                    Does not configure network interfaces and 
                                       does not export networks services.
3   Multi-user Mode with Networking    Starts the system normally.
4   Not used/User-definable            For special purposes.
5   Start the system normally with 
    with GUI                           As runlevel 3 + display manager.
6   Reboot                             Reboots the system.

因此,每个rcN目录都包含指向应在该运行级别运行的脚本的符号链接。所有实际脚本通常都在/etc/init.d目录中:

$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14  2013 /etc/rc5.d/S22cron -> ../init.d/cron

符号链接命名

名称以 an 开头的符号链接S将在相关运行级别启动,而名称以 开头的符号链接K将被终止。请注意,重启运行级别中的所有链接rc6.d均以 开头K。那是因为它们都应该停止以重新启动,并且不应启动任何内容。

首字母后面的数字表示链接脚本的运行顺序。数字较小的将先于数字较大的运行。所以,在你的具体例子中,S23ntp将运行(在本例中启动) S24dovecot

答案2

  1. 这些是runlevels 和 are 是大多数 *NIX 系统使用的 System V 式启动(基于 - 的系统除外systemd)。当启动内核/用户时,runlevel它决定应该运行什么并只执行那个runlevel。这意味着runlevel您可以使用不同的程序集启动。也有用于停止和重新启动的运行级别,但由于您专注于启动部分,所以我们现在忽略它们。
  2. 由于启动时只执行一个runlevel,因此某些程序应该/想要在不同的runlevels 处以相同或不同的顺序使用不同或相同的参数启动/停止(并非所有运行级别在所有操作系统中都相同)。但是 Ubuntu 从 2 复制了运行级别 3-5,这就是为什么它们是相同的。
  3. No. runlevels 仅在启动时或更改时执行一次runlevel
  4. ntp脚本应该首先dovecot在运行级别 2-5 中执行,而不是运行级别 1。脚本名称中的序号 ( ) 表示执行顺序。因此,这完全取决于您使用的运行级别。S23ntp
  5. 这取决于发行版,但在 Ubuntu 的特殊情况下,您可以将脚本添加到运行级别 1 和 2。

更多信息在维基百科关于 Ubuntu 运行级别的文章

答案3

1) 多个 rcX.d 目录指定在“X”运行级别期间启动或停止哪些服务。

2) rc0.d 用于运行级别 0,即关闭状态。 rc6.d 用于重新启动。其余的均针对不同的运行级别 (2 - 5)。 S 代表开始,K 代表终止。这些本质上是 /etc/rc.d 中原始脚本的链接。 S/K 之后的数字是启动/终止服务的优先级。

3) 是的,如果多次指定,启动/终止脚本将运行多次。但没有人愿意这样做。

4) 查看优先级编号,ntp 服务将首先启动,然后是 dovecot。

5)第四点就是这样。

相关内容