Question Quelle est la différence entre / etc / init / et /etc/init.d/?


Quelle est la différence entre /etc/init/ et /etc/init.d/?

Plus généralement, quel sens la .d suffixe transmettre à un répertoire?


217
2017-10-01 22:59


origine




Réponses:


/etc/init.d contient les scripts utilisés par les outils d'initialisation System V (SysVinit). Ceci est le package de gestion de service traditionnel pour Linux, contenant le init programme (le premier processus qui est exécuté lorsque le noyau a fini d’initialiser) ainsi que certaines infrastructures pour démarrer et arrêter les services et les configurer. Plus précisément, les fichiers dans /etc/init.d sont des scripts shell qui répondent à start, stop, restart, et (quand supporté) reload commandes pour gérer un service particulier. Ces scripts peuvent être invoqués directement ou (le plus souvent) via un autre déclencheur (généralement la présence d'un lien symbolique dans /etc/rc?.d/).

/etc/init contient les fichiers de configuration utilisés par Upstart. Upstart est un progiciel de gestion des services pour jeunes proposé par Ubuntu. Fichiers dans /etc/init sont des fichiers de configuration indiquant à Upstart comment et quand start, stop, reload la configuration, ou interroger le status d'un service. Comme pour lucid, Ubuntu est en train de passer de SysVinit à Upstart, ce qui explique pourquoi de nombreux services sont fournis avec des scripts SysVinit, même si les fichiers de configuration Upstart sont préférés. En fait, les scripts SysVinit sont traités par une couche de compatibilité dans Upstart.

.d dans les noms de répertoires indique généralement un répertoire contenant de nombreux fichiers de configuration ou scripts pour une situation particulière (par ex. /etc/apt/sources.list.d contient des fichiers concaténés pour créer un fichier virtuel sources.list; /etc/network/if-up.d contient des scripts qui sont exécutés quand un réseau jenterFace est activé). Cette structure est généralement utilisée lorsque chaque entrée du répertoire est fournie par une source différente, de sorte que chaque package peut déposer son propre plug-in sans avoir à analyser un seul fichier de configuration pour se référencer. Dans ce cas, il se trouve que "init" est un nom logique pour le répertoire, SysVinit est venu en premier et utilisé init.d, et Upstart utilisé plaine init pour un répertoire ayant un but similaire (il aurait été plus «courant», et peut-être moins arrogant, s'ils avaient utilisé /etc/upstart.d au lieu).

¹ sans compter initrd


217
2017-10-01 23:28



note historique ésotérique: le .d Les répertoires sont entrés avec System V. C’était alors une notation déconcertante et finalement probablement l’idée d’une personne qui est entrée dans le code et qui ne pouvait pas partir. Par exemple, si vous pensez que cat est un mauvais nom pour la tâche qu'il exécute, imaginez combien de fichiers dans le système vous devrez toucher pour le changer. - msw
Sur les systèmes qui ont les deux répertoires, lequel de Upstart et SysVinit est utilisé? Y-a-t-il un moyen de vérifier? - asheeshr
@AsheeshR Vérifiez s'il y a un paquet appelé upstart ou sysvinit. Et dans les versions récentes, il pourrait être systemd ainsi (qui n'existait pas pour Ubuntu lorsque j'ai écrit ma réponse). C'est ce que propose le paquet /sbin/init (dpkg -S /sbin/init). - Gilles
Sur l'instance AWS Ubuntu que j'utilise (de Bitnami), c'est le upstart package qui fournit / sbin / init (exécuté dpkg -S /sbin/init). Mais Bitnami a placé son script dans le répertoire /etc/init.d. N'est-ce pas contradictoire avec votre réponse à @AsheeshR ci-dessus? Je vous remercie. - Sabuncu
@Sabuncu Voici un exemple de «Les scripts SysVinit sont traités par une couche de compatibilité dans Upstart». - Gilles


Le ".d" est généralement ajouté à un nom de répertoire pour indiquer que ce qui était autrefois (ou ce qui aurait pu être) géré par un seul script ou un seul fichier de configuration a été divisé en plusieurs fichiers pour des raisons de commodité, mais devrait être inclus, ou exécuté, ensemble.

Par exemple, /etc/apache/conf.d/ ou /etc/apt/sources.d/

Dans les cas où il est important de savoir dans quel ordre ils doivent être inclus / exécutés, les fichiers de ces répertoires commencent parfois par un numéro, comme "00-default" ou "80-user", afin qu'ils s'exécutent dans le bon ordre.

Dans le cas de /etc/init.d/ cela indique en quelque sorte que les scripts dans "init.d" doivent tous être exécutés. Aujourd'hui, le système d'initialisation des systèmes d'exploitation modernes est un peu plus complexe que cela, mais le nom du répertoire est toujours là.


26
2018-05-10 02:51



Peut-être le .d signifie qu'il est lié à un processus "deamon" qui est normalement démarré au démarrage.
.d est certainement pour répertoire, pas daemon. - Martin


Comme vous le soulignez, la nomenclature ".d" est déroutante et étrange et n’a pas vraiment sa place dans un système moderne - vous remarquerez que la plupart des services modernes ont tendance à le laisser tomber.

La raison pour laquelle le répertoire est /etc/init et pas /etc/upstart est parce que Upstart est le nom du projet, le binaire installé réel est toujours /sbin/init ainsi, sa configuration n'aurait pas de sens si son nom ne correspondait pas au binaire.


12
2017-10-13 01:59



C'est faux, voir par exemple Udev rules.d, Xorg est relativement récent xorg.conf.dpas trop vieux /etc/profile.d etc.. - Ruslan