![/etc 中的 rc0.d,rc1.d,... 目录](https://linux22.com/image/49140/%2Fetc%20%E4%B8%AD%E7%9A%84%20rc0.d%2Crc1.d%2C...%20%E7%9B%AE%E5%BD%95.png)
我正在运行 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
问题:
- 多个“rc”目录的用途是什么?
- 为什么 Ubuntu 将 和 的副本安装
dovecot
到除和ntp
之外的所有目录中?rc0.d
rc6.d
- 如果像上面那样多次指定它们,那么它们实际上会被执行多次吗?
- 从上面你能看出启动时按照什么顺序
dovecot
执行ntp
吗? - 告诉 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
- 这些是
runlevel
s 和 are 是大多数 *NIX 系统使用的 System V 式启动(基于 - 的系统除外systemd
)。当启动内核/用户时,runlevel
它决定应该运行什么并只执行那个runlevel
。这意味着runlevel
您可以使用不同的程序集启动。也有用于停止和重新启动的运行级别,但由于您专注于启动部分,所以我们现在忽略它们。 - 由于启动时只执行一个
runlevel
,因此某些程序应该/想要在不同的runlevel
s 处以相同或不同的顺序使用不同或相同的参数启动/停止(并非所有运行级别在所有操作系统中都相同)。但是 Ubuntu 从 2 复制了运行级别 3-5,这就是为什么它们是相同的。 - No.
runlevel
s 仅在启动时或更改时执行一次runlevel
。 ntp
脚本应该首先dovecot
在运行级别 2-5 中执行,而不是运行级别 1。脚本名称中的序号 ( ) 表示执行顺序。因此,这完全取决于您使用的运行级别。S23ntp
- 这取决于发行版,但在 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)第四点就是这样。