web-dev-qa-db-fra.com

Les répertoires rc0.d, rc1.d, ... dans / etc

J'utilise Ubuntu où j'ai les répertoires /etc/rc0.d, /etc/rc1.d, /etc/rc2.d, ..., /etc/rc6.d.

Exemples de fichiers de ma machine:

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

Des questions:

  1. À quoi servent les multiples répertoires "rc"?
  2. Pourquoi Ubuntu a-t-il installé des doublons de dovecot et ntp dans tous les répertoires sauf rc0.d et rc6.d?
  3. S'ils sont spécifiés plusieurs fois comme ci-dessus, sont-ils réellement exécutés plusieurs fois?
  4. Pouvez-vous dire à partir de ce qui précède dans quel ordre dovecot et ntp s'exécuteront au démarrage?
  5. Quelle est la bonne façon de dire à Ubuntu de toujours exécuter ntp avant dovecot au démarrage?
32
roger.james
  1. Ce sont des runlevel et sont une initiation de type System V utilisée par la plupart des systèmes * NIX (à l'exception notable des systèmes basés sur systemd). Lors du démarrage, le noyau/l'utilisateur décide quel runlevel doit-il exécuter et exécuter uniquement ce runlevel. Cela signifie qu'en fonction de runlevel, vous pouvez démarrer avec un autre ensemble de programmes. Il existe également des niveaux d'exécution pour l'arrêt et le redémarrage, mais comme vous vous concentrez sur la partie démarrage, ignorons-les pour l'instant.
  2. Puisqu'un seul runlevel est exécuté au démarrage, certains programmes devraient/vouloir démarrer/s'arrêter à différents runlevel avec des paramètres différents ou identiques dans le même ordre ou dans un ordre différent (tous les niveaux d'exécution ne sont pas les mêmes dans tous les OS). Mais Ubuntu copie les niveaux d'exécution 3 à 5 de 2, c'est pourquoi ils sont les mêmes.
  3. Non. runlevels sont exécutés une seule fois au démarrage ou lorsque vous modifiez runlevel.
  4. ntp les scripts doivent s'exécuter en premier, puis dovecot dans le niveau d'exécution 2-5, ce qui n'est pas le cas pour le niveau d'exécution 1. Le nombre ordinal dans les noms de script (S23ntp) indique l'ordre d'exécution. Tout dépend donc du niveau d'exécution que vous utilisez.
  5. Cela dépend de la Distro mais dans le cas particulier d'Ubuntu, vous pouvez ajouter votre script aux niveaux d'exécution 1 et 2.

Plus d'informations dans l'article Wikipedia sur les niveaux d'exécution d'Ubuntu

23
Braiam

Comme d'autres l'ont noté, la réponse est tout au sujet de runlevels qui sont essentiellement les modes de fonctionnement d'un système d'exploitation. Sous Linux, ce sont généralement:

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.

Ainsi, chacun des répertoires rcN contient des liens symboliques vers les scripts qui doivent être exécutés à ce niveau d'exécution. Tous les scripts réels sont normalement dans le /etc/init.d répertoire:

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

Dénomination des liens symboliques

Un lien symbolique dont le nom commence par S sera démarré au niveau d'exécution en question tandis que ceux dont le nom commence par K seront tués. Notez que tous les liens dans rc6.d, le niveau d'exécution de redémarrage, commencez par K. C'est parce qu'ils doivent tous être arrêtés pour un redémarrage et rien ne doit être démarré.

Les chiffres après la lettre initiale font référence à l'ordre d'exécution des scripts liés. Ceux avec des nombres plus petits seront exécutés avant ceux avec des nombres plus élevés. Ainsi, dans votre exemple spécifique, S23ntp sera exécuté (démarré dans ce cas) avant S24dovecot.

41
terdon

1) Les multiples répertoires rcX.d spécifient les services à démarrer ou à arrêter pendant le niveau d'exécution "X".

2) rc0.d est pour le niveau d'exécution 0 qui est l'arrêt. rc6.d est pour le redémarrage. Reste que tous sont pour différents niveaux d'exécution (2 - 5). Le S signifie départ et K pour Kill. Il s'agit essentiellement de liens vers les scripts d'origine dans /etc/rc.d. Les nombres après S/K sont la priorité selon laquelle les services seront démarrés/supprimés.

3) Oui, si elles sont spécifiées plusieurs fois, le script de démarrage/arrêt sera exécuté plusieurs fois. Mais personne ne veut faire ça.

4) En regardant les numéros prioritaires, le service ntp sera démarré en premier, suivi de pigeonnier.

5) Le 4ème point est le chemin.

4
Albert