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

rog*_*mes 38 init-script services init.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
Run Code Online (Sandbox Code Playgroud)

问题:

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

ter*_*don 49

正如其他人所指出的,答案都是关于运行级别的运行级别基本上是操作系统的操作模式。在 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.
Run Code Online (Sandbox Code Playgroud)

因此,每个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
Run Code Online (Sandbox Code Playgroud)

符号链接命名

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

首字母后的数字表示链接脚本的运行顺序。那些数字较小的将在数字较大的那些之前运行。因此,在您的特定示例中,S23ntp S24dovecot.


Bra*_*iam 24

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

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


小智 5

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

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

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

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

5)第四点是方法。