Katalogi rc0.d, rc1.d,… w / etc

30

Używam Ubuntu gdzie mam katalogi /etc/rc0.d, /etc/rc1.d, /etc/rc2.d, ..., /etc/rc6.d.

Przykładowe pliki z mojego komputera:

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

Pytania:

  1. Jaki jest cel wielu katalogów „rc”?
  2. Dlaczego nie zainstalować Ubuntu duplikaty dovecoti ntpdo wszystkich katalogów z wyjątkiem rc0.da rc6.d?
  3. Jeśli są one określone wiele razy, jak powyżej, to czy faktycznie są wykonywane wielokrotnie?
  4. Czy możesz powiedzieć z powyższego, w jakiej kolejności dovecoti ntpbędzie wykonywany przy starcie?
  5. Jaki jest właściwy sposób, aby powiedzieć Ubuntu, aby zawsze uruchamiał się ntpprzed dovecoturuchomieniem?
roger.james
źródło

Odpowiedzi:

23
  1. Są to runleveli są inicjacją typu System V używaną przez większość systemów * NIX (z godnym uwagi wyjątkiem systemdsystemów opartych na systemie). Podczas uruchamiania jądro / użytkownik decyduje, co runlevelpowinno zostać uruchomione i wykonać tylko to runlevel. Oznacza to, że w zależności od tego runlevelmożna uruchomić inny zestaw programów. Istnieją również poziomy uruchamiania do zatrzymania i ponownego uruchomienia, ale ponieważ koncentrujesz się na części startowej, zignorujmy je na razie.
  2. Ponieważ tylko jeden runleveljest uruchamiany podczas rozruchu, niektóre programy powinny / chcą uruchamiać / zatrzymywać w różnych runlevels z różnymi lub tymi samymi parametrami w tej samej lub innej kolejności (nie wszystkie poziomy działania są takie same we wszystkich systemach operacyjnych). Ale poziomy uruchamiania Ubuntu 3-5 z 2, dlatego są takie same.
  3. Nie. runlevelS są wykonywane tylko raz podczas uruchamiania lub po zmianie runlevel.
  4. ntpskrypty powinny być uruchamiane najpierw, a następnie dovecotna poziomie działania 2-5, a nie na poziomie działania 1. Liczba porządkowa w nazwach skryptów ( ) określa kolejność wykonywania. Wszystko zależy więc od używanego poziomu uruchamiania.S23ntp
  5. To zależy od Distro, ale w konkretnym przypadku Ubuntu możesz dodać swój skrypt do poziomu 1 i 2.

Więcej informacji w artykule Wikipedii na temat poziomów uruchamiania Ubuntu

Braiam
źródło
więc jeśli wstawię skrypt do wszystkich katalogów RC.X, będzie on wykonywany kilka razy, czy nie?
Flash Thunder
@FlashThunder no.
Braiam
40

Jak zauważyli inni, odpowiedź dotyczy wszystkich poziomów działania, które są w zasadzie trybami działania systemu operacyjnego. W systemie Linux są to zwykle:

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.

Każdy rcNkatalog zawiera zatem dowiązania symboliczne do skryptów, które powinny być uruchamiane na tym poziomie pracy. Wszystkie rzeczywiste skrypty są zwykle w /etc/init.dkatalogu:

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

Nazwy dowiązań symbolicznych

Łącze symboliczne, którego nazwa zaczyna się od, Szostanie uruchomione na danym poziomie uruchamiania, podczas gdy osoby, których nazwa zaczyna się od, Kzostaną zabite. Zauważ, że wszystkie linki w rc6.d, poziom uruchamiania ponownego uruchomienia, zaczynają się od K. Jest tak, ponieważ wszystkie powinny zostać zatrzymane w celu ponownego uruchomienia i nic nie powinno się zaczynać.

Liczby po pierwszej literze odnoszą się do kolejności działania połączonych skryptów. Te z mniejszymi liczbami będą biegać przed tymi z wyższymi liczbami. Tak więc, w konkretnym przykładzie, S23ntpzostanie uruchomione (rozpoczął się w tym przypadku) przed S24dovecot .

terdon
źródło
Świetna odpowiedź! Co jeśli dwa skrypty mają takie same numery, na przykład: S01bluetoothi S01rsyncczy kolejność będzie dowolna?
direprobs
@direprobs huh, dobre pytanie. Tak, zgaduję, że jedno z nich zostanie wybrane losowo. Nie mogę powiedzieć, że wiem.
terdon
@tredon Myślę, że zostaną wybrani na podstawie nazw plików, ponieważ zaczynają się S01od porównania, b< rmasz pomysł. Może!
direprobs
1
Krótka odpowiedź brzmi, /etc/init.d/rcmówi for s in /etc/rc$runlevel/S*; do …, więc po prostu idzie w kolejności globalnej ekspansji; tj. numeryczne / alfabetyczne. Długa odpowiedź brzmi: kod tam jest o wiele bardziej skomplikowany niż pamiętam. Spróbuję poświęcić trochę czasu na studiowanie go w ciągu najbliższych sześciu do ośmiu tygodni. Na pierwszy rzut oka wygląda to wydobywania numer znajdujący się po Si robić coś z nim, więc S42beeblebroxi S42zaphodmoże być bardziej ściśle związane niż, powiedzmy, S43arthuri S44dent.
G-Man mówi „Przywróć Monikę”
naprawdę dziękuję za świetną odpowiedź, ale mam pytanie. Uruchomiłem swój program, ale prędkość aplikacji jest niska: stackoverflow.com/questions/49251955/…
H.Ghassami
4

1) Wiele katalogów rcX.d określa, które usługi mają być uruchamiane lub zatrzymywane podczas poziomu uruchamiania „X”.

2) rc0.d jest dla poziomu 0, który jest wyłączony. rc6.d służy do ponownego uruchomienia. Reszta wszystkie są dla różnych poziomów pracy (2–5). S oznacza początek, a K oznacza zabicie. Są to zasadniczo linki do oryginalnych skryptów w /etc/rc.d. Liczby po S / K są priorytetem, według którego usługi zostaną uruchomione / Zabite.

3) Tak, jeśli zostaną określone wiele razy skrypt start / kill będzie uruchamiany wiele razy. Ale nikt nie chce tego robić.

4) Patrząc na numery priorytetowe, najpierw uruchomiona zostanie usługa ntp, a następnie dovecot.

5) Czwarty punkt jest właściwy.

Albert
źródło