Je suis en cours d' exécution 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:
- À quoi servent les multiples répertoires "rc"?
- Pourquoi Ubuntu a-t-il installé des doublons de
dovecot
etntp
dans tous les répertoires à l'exception derc0.d
etrc6.d
? - S'ils sont spécifiés plusieurs fois comme ci-dessus, sont-ils réellement exécutés plusieurs fois?
- Pouvez-vous dire à partir de ce qui précède dans quel ordre
dovecot
etntp
s'exécutera au démarrage? - Quelle est la bonne façon de dire à Ubuntu de toujours s'exécuter
ntp
avantdovecot
au démarrage?
services
init-script
init.d
roger.james
la source
la source
Comme d'autres l'ont noté, la réponse est tout au sujet des niveaux d' exécution qui sont fondamentalement les modes de fonctionnement d'un système d'exploitation. Sous Linux, ce sont généralement:
Ainsi, chacun des
rcN
répertoires 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:Dénomination des liens symboliques
Un lien symbolique dont le nom commence par un
S
sera démarré au niveau d'exécution en question tandis que ceux dont le nom commence parK
seront tués. Notez que tous les liensrc6.d
, le niveau d'exécution de redémarrage, commencent parK
. 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) avantS24dovecot
.la source
S01bluetooth
etS01rsync
, l'ordre sera-t-il arbitraire?S01
la comparaison serab
<r
, vous avez l'idée. Peut être!/etc/init.d/rc
dit-ellefor s in /etc/rc$runlevel/S*; do …
, donc elle va simplement dans l'ordre d'expansion globale; c'est-à-dire numérique / alphabétique. La réponse longue est que le code qu'il contient est beaucoup plus compliqué que je ne m'en souviens. J'essaierai de passer du temps sérieusement à l'étudier dans les six à huit prochaines semaines. À première vue, il semble extraire le nombre après leS
et en faire quelque chose,S42beeblebrox
etS42zaphod
pourrait donc être plus étroitement associé que, disons,S43arthur
etS44dent
.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.
la source