Каталоги rc0.d,rc1.d,... в /etc

Каталоги rc0.d,rc1.d,... в /etc

Я использую 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.dи rc6.d?
  3. Если они указаны несколько раз, как указано выше, выполняются ли они на самом деле несколько раз?
  4. Можете ли вы из вышесказанного определить, в каком порядке dovecotи в каком порядке ntpони будут выполняться при запуске?
  5. Как правильно указать Ubuntu, что нужно всегда выполнять команду ntpbefore 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

Символическое наименование ссылок

Символическая ссылка, имя которой начинается с , Sбудет запущена на соответствующем уровне выполнения, а те, имя которых начинается с , Kбудут уничтожены. Обратите внимание, что все ссылки в rc6.d, уровне выполнения перезагрузки, начинаются с K. Это потому, что все они должны быть остановлены для перезагрузки, и ничего не должно быть запущено.

Цифры после первой буквы указывают на порядок запуска связанных скриптов. Те, у которых номера меньше, будут запущены раньше тех, у которых номера больше. Так что в вашем конкретном примере S23ntpбудет запущен (в данном случае запущен)до S24dovecot.

решение2

  1. Это runlevels и инициация в стиле System V, используемая большинством систем *NIX (за исключением systemdсистем на основе -). При загрузке ядро/пользователь решает, что runlevelзапустить, и выполняет только это runlevel. Это означает, что в зависимости от runlevelвы можете загрузиться с другим набором программ. Также есть уровни запуска для остановки и перезагрузки, но поскольку вы сосредоточены на части запуска, давайте пока проигнорируем их.
  2. runlevelПоскольку при загрузке выполняется только один , некоторые программы должны/хотят запускаться/останавливаться в разных runlevels с разными или одинаковыми параметрами в одном или разном порядке (не все уровни запуска одинаковы во всех ОС). Но Ubuntu копирует уровни запуска 3-5 из 2, поэтому они одинаковы.
  3. Номера runlevelвыполняются только один раз при запуске или при изменении 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) Четвертый пункт — путь.

Связанный контент