J'apprends la ligne de commande à partir d'un livre intitulé " Linux Command Line and Shell Scripting Bible, Second Edition ". Le livre déclare ceci:
Certaines implémentations Linux contiennent une table de processus pour démarrer automatiquement au démarrage. Sur les systèmes Linux, cette table se trouve généralement dans le fichier spécial / etc / inittabs.
D'autres systèmes (comme la distribution populaire Ubuntu Linux) utilisent le dossier /etc/init.d, qui contient des scripts pour démarrer et arrêter des applications individuelles au démarrage. Les scripts sont démarrés via des entrées dans les dossiers /etc/rcX.d, où X est un niveau d'exécution.
Probablement parce que je suis nouveau sur Linux, je n'ai pas compris ce que signifiait le deuxième paragraphe cité. Quelqu'un peut-il expliquer la même chose dans un langage beaucoup plus simple?
la source
Réponses:
Oublions
init.d
ourcx.d
gardons les choses très simples. Imaginez que vous programmiez 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 a regardé dans un
scripts
dossier pour exécuter les scripts. Pour ordonner la priorité des scripts, vous devez les nommer dans, disons l'ordre numérique. Cet ordre est ce qui dicte la relation entreinit.d
etrc
En d'autres termes,
init.d
contient les scripts à exécuter etrcX.d
contient leur ordre d'exécution.La
X
valeur dercX.d
est le niveau d'exécution. Cela pourrait être vaguement traduit à l'état actuel du système d'exploitation.Si vous creusez à l'intérieur des
rcX.d
scripts, vous trouverez ce formatage:X
est remplacé parK
ouS
, qui indique si le script doit êtrekilled
oustarted
dans le niveau d'exécution en coursxx
est le numéro de commandeabcd
est le nom du script (le nom n'a pas d'importance cependant où il pointe est le script que cela exécutera)la source
Il existe plusieurs systèmes d'initialisation différents pour Linux. Les principaux sont SysVinit (le traditionnel), Upstart (le remplacement 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 peut les mentionner en ce qui concerne Ubuntu parce que les informations sont un peu datées (Ubuntu utilisait SysVinit comme tout le monde) ou parce que ces répertoires existent toujours pour des raisons de 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
contient les scripts à exécuter lorsque vous entrez dans le niveau d'exécution N (/etc/rc$N.d/S*
) et les scripts à exécuter lorsque vous quittez 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 démarré (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 responsable de la traversée
/etc/rc$N.d
est/etc/init.d/rc
(sur Ubuntu pré-démarrage et sur Debian; les emplacements peuvent varier sur d'autres distributions Linux).la source
/etc/init.d
et/etc/rc?.d
plus, et a Upstart à la place?/etc/init.d
(au lieu de.conf
fichiers Upstart/etc/init
), donc Upstart prend toujours en charge/etc/init.d
et/etc/rc?.d
pour des raisons de compatibilité./etc/init.d
est le répertoire auquel appartiennent les scripts d'initialisation.C'est
etc/rcX.d
là que les liens contrôlant quels services sont tués ou démarrés lors de l'entrée dans le niveau d'exécutionX
. Les fichiersrcX.d
commençant par K sont exécutés avec le paramètrestop
, et les fichiers commençant parS
sont exécutés avec le paramètrestart
. Il est typique de séquencer l'ordre de démarrage et d'arrêt en utilisant un nombre à deux chiffres après leK
ouS
. Pour garantir un ordre de démarrage et d'arrêt correct, 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 changeant la casse de
K
ouS
enk
ous
.EDIT: les administrateurs exécutent généralement les scripts à partir
/etc/init.d
desquels peut être un lien symbolique vers un autre répertoire en fonction de la distribution. (Différentes distributions ont des normes différentes.)Les
rcX.d
sont utilisés par le code d'initialisation pour modifier les niveaux d'exécution.la source
/etc/init.d
existe un lien symbolique vers le répertoire sous/etc/rc.d/init.d
/etc/init.d
est inutile sans/etc/rcX.d
? Et puisque/etc/rcX.d
le contrôleur des programmes qui sont lancés au démarrage, sa fonction est similaire à celle de/etc/init.d
, n'est-ce pas?Bien que @BillThor y ait très bien répondu, voici ma compréhension de
/etc/rcX.d
et/etc/init.d
:/etc/init.d
contient des scripts pour démarrer et arrêter des applications individuelles au démarrage./etc/rc?.d
les répertoires représentent différents niveaux d'exécution et les scripts qu'ils contiennent ne sont que des liens symboliques vers les scripts réels du/etc/init.d
répertoire. La modification des niveaux d'exécution modifie le mode du système, comme le mode très simple Utilisateur unique en mode console uniquement à l'interface graphique avancée.Donc, il n'y a pas d'utilisation de
/etc/rc?.d
répertoires sans/etc/init.d
lui - même (et bien sûr, vice-versa).la source