La réponse du chaos est ce que disent certains documents. Mais ce n'est pas ce que systemd fait réellement. (Ce n’est pas non plus ce que van Smoorenburg a rc
fait. Van Smoorenburg rc
n’a certainement pas ignoré les en-têtes LSB, qui insserv
servaient au départ à calculer les ordres statiques.) La documentation de Freedesktop, telle que la page "Incompatibilités", est en réalité fausse, ces points et d’autres. (La HOME
variable d'environnement , en fait , est souvent définie, par exemple. Cela a duré entièrement non documenté nulle part depuis longtemps. Il est maintenant documenté dans le manuel, au moins, mais cette page Freedesktop WWW n'a toujours pas été corrigée.)
Le format de service natif pour systemd est l' unité de service . La gestion des services proprement dite de systemd fonctionne uniquement avec ceux-ci, qu'elle lit dans l'un des neuf répertoires où les .service
fichiers (à l'échelle du système) peuvent vivre. /etc/systemd/system
, /run/systemd/system
, /usr/local/lib/systemd/system
Et /usr/lib/systemd/system
sont quatre de ces répertoires.
La compatibilité avec les rc
scripts de van Smoorenburg est obtenue avec un programme de conversion, nommé systemd-sysv-generator
. Ce programme est répertorié dans le /usr/lib/systemd/system-generators/
répertoire et est donc exécuté automatiquement par systemd au début du processus d’amorçage, à chaque démarrage, puis chaque fois que ce dernier reçoit l’instruction de recharger ultérieurement sa configuration.
Ce programme est un générateur , un type d’utilitaire auxiliaire dont la tâche est de créer des fichiers d’unité de service à la volée, dans un fichier tmpfs où se trouvent trois des neuf répertoires supplémentaires (destinés à être utilisés uniquement par des générateurs). systemd-sysv-generator
génère les unités de service qui exécutent les rc
scripts van Smoorenburg à partir de /etc/init.d
, si aucune unité de service systemd native portant ce nom n'existe déjà dans les six autres emplacements.
La gestion des services systemd ne connaît que les unités de service. Ces unités de service (régénérées) automatiquement sont écrites pour appeler les rc
scripts de van Smoorenburg . Ils ont, entre autres:
[Unité]
SourcePath = / etc / init.d / wibble
[Un service]
ExecStart = / etc / init.d / wibble start
ExecStop = / etc / init.d / wibble stop
Selon la sagesse reçue, les rc
scripts van Smoorenburg doivent avoir un en-tête LSB et s'exécuter en parallèle sans respecter les priorités imposées par le /etc/rc?.d/
système. Ceci est incorrect sur tous les points.
En fait, ils ne ont pas besoin d'avoir une tête LSB, et si elles ne systemd-sysv-generator
peuvent reconnaître les anciens en- têtes commentaire RedHat plus limités ( description:
, pidfile:
et ainsi de suite). De plus, en l'absence d'un en-tête LSB, il reviendra au contenu des /etc/rc?.d
fermes de liens symboliques, lisant les priorités encodées dans les noms de liens et construisant un ordre avant / après, sérialisant les services. Non seulement les en-têtes LSB ne sont pas obligatoires, et non seulement ils codent eux-mêmes les commandes avant / après qui sérialisent les choses dans une certaine mesure, mais le comportement de repli dans leur absence totale est en réalité un fonctionnement nettement non parallélisé.
La raison pour laquelle cela /etc/rc3.d
n'a pas semblé avoir de l'importance, c'est que ce script avait probablement été activé via un autre /etc/rc?.d/
répertoire. systemd-sysv-generator
traduit être répertorié dans aucun des /etc/rc2.d/
, /etc/rc3.d/
et /etc/rc4.d/
dans une Wanted-By
relation native à systemd multi-user.target
. Les niveaux d'exécution sont "obsolètes" dans le monde systemd et vous pouvez les oublier.
Lectures complémentaires
systemd
et que le script /etc/init.d n’est pas configuré pour "démarrer au démarrage", il fonctionnera toujours comme prévu, mais ne sera pas affiché dans le répertoire. Listes des salonsSystemd est rétrocompatible avec les scripts d'initialisation SysV. Selon LSB 3.1, le script d'initialisation doit avoir des conventions de commentaires informatives , définissant à quel moment le script doit être démarré / arrêté et ce qui est requis pour que le script puisse être démarré / arrêté. Ceci est un exemple:
Il s'agit d'une section commentée ignorée par SysV. D'autre part, systemd lit ces informations de dépendance et exécute ces scripts en fonction de cela.
Mais il y a un point où systemd et SysV diffèrent en termes de scripts d'initialisation. SysV exécute les scripts dans un ordre séquentiel basé sur leur numéro dans le nom du fichier. Systemd ne le fait pas. Si les dépendances sont remplies, systemd exécute les scripts immédiatement, sans respecter la numérotation des noms de script. Certains d'entre eux vont probablement échouer à cause de la commande. Il y a beaucoup d'autres incompatibilités à prendre en compte.
S'il existe des scripts d'initialisation et des fichiers .service pour le même service, systemd les exécutera dès que les dépendances seront satisfaites (dans le cas du script d'initialisation, celles définies dans l'en-tête LSB).
la source