GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la connexion entre les répertoires /etc/init.d et /etc/rcX.d sous Linux ?

Oublions init.d ou rcx.d et garder les choses très simples. Imaginez que vous programmez un programme dont la seule responsabilité est d'exécuter ou de tuer d'autres scripts un par un.

Cependant, votre prochain problème est de vous assurer qu'ils fonctionnent dans l'ordre. Comment feriez-vous cela ?

Et imaginons que ce programme regarde à l'intérieur d'un scripts dossier pour exécuter les scripts. Pour ordonner la priorité des scripts, vous les nommeriez par ordre numérique. Cet ordre est ce qui dicte la relation entre init.d et rc

Autrement dit init.d contient les scripts à exécuter et le rcX.d contient leur commande à exécuter.

Le X valeur en rcX.d est le niveau d'exécution. Cela pourrait être vaguement traduit dans l'état actuel du système d'exploitation.

Si vous creusez à l'intérieur du rcX.d scripts, vous trouverez cette mise en forme :

Xxxabcd
  • X est remplacé par K ou S , qui indique si le script doit être killed ou started dans le niveau d'exécution actuel
  • xx est le numéro de commande
  • abcd est le nom du script (le nom n'est pas pertinent mais où il pointe est le script qui sera exécuté)

Il existe plusieurs systèmes d'initialisation différents pour Linux. Les principaux sont SysVinit (le traditionnel), Upstart (le remplaçant d'Ubuntu) et SystemD (poussé par Fedora et Gnome). Les répertoires /etc/init.d et /etc/rc?.d sont utilisés par SysVinit. Le livre les mentionne peut-être en ce qui concerne Ubuntu parce que l'information est un peu datée (Ubuntu utilisait SysVinit comme tout le monde) ou parce que ces répertoires existent toujours pour la compatibilité.

/etc/init.d contient un tas de scripts, chacun contenant des instructions pour démarrer et arrêter un service. Certains de ces services doivent être démarrés au démarrage; d'autres doivent être démarrés en mode multi-utilisateur mais pas en mode de maintenance mono-utilisateur ; et il est possible de définir différents modes avec différents ensembles de services souhaités. SysVinit gère cela via des niveaux d'exécution. Le répertoire /etc/rc$N.d contiennent les scripts à exécuter lors de l'entrée au niveau d'exécution N (/etc/rc$N.d/S* ) et les scripts à exécuter en quittant le niveau d'exécution N (/etc/rc$N.d/K* ). Étant donné que de nombreux niveaux d'exécution ont des scripts en commun, plutôt que de stocker une copie des scripts pour chaque niveau d'exécution, les scripts sont tous stockés dans un seul emplacement /etc/init.d , et les répertoires spécifiques au niveau d'exécution /etc/rc?.d contiennent des liens symboliques. De plus les noms des liens symboliques indiquent si le service doit être lancé (S* ) ou arrêté (tué, K* ) dans ce niveau d'exécution, et un préfixe numérique est utilisé pour contrôler l'ordre dans lequel les scripts sont exécutés.

Le script chargé de traverser /etc/rc$N.d est /etc/init.d/rc (sur Ubuntu pré-Upstart et sur Debian ; les emplacements peuvent varier sur d'autres distributions Linux).


/etc/init.d est le répertoire où appartiennent les scripts d'initialisation.

Le etc/rcX.d est l'endroit où les liens contrôlent quels services sont tués ou démarrés lors de l'entrée au niveau d'exécution X . Fichiers en rcX.d commençant par K sont exécutés avec le paramètre stop , et les fichiers commençant par S sont exécutés avec le paramètre start . Il est typique de séquencer l'ordre de démarrage et d'arrêt en utilisant un nombre à deux chiffres après le K ou S . Pour garantir un bon ordre de démarrage et d'arrêt, il est courant que les deux séquences totalisent 100.

Les programmes peuvent être désactivés dans un niveau d'exécution en supprimant les liens ou en modifiant la casse du K ou S à k ou s .

EDIT :les administrateurs exécutent généralement les scripts à partir de /etc/init.d qui peut être un lien symbolique vers un autre répertoire selon la distribution. (Les différentes distributions ont des normes différentes.)

Le rcX.d sont utilisés par le code d'initialisation pour modifier les niveaux d'exécution.


Linux
  1. Commande grpck – Supprimez les entrées corrompues ou en double dans les fichiers /etc/group et /etc/gshadow.

  2. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  3. Différence entre /etc/crontab et crontab -e

  4. Linux :Différence entre /dev/console , /dev/tty et /dev/tty0

  5. Différence entre /etc/hosts et /etc/resolv.conf

La bonne façon de modifier les fichiers /etc/passwd et /etc/group sous Linux

La différence entre ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc … ?

Comment /etc/motd est-il mis à jour ?

UNIX / Linux :Quelle est la bonne permission des répertoires /tmp et /var/tmp

Qu'est-ce qu'Anacron et son utilisation sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions