Pourrais-tu développer? Je ne comprends pas ce que tu veux dire. Aurais-tu un exemple? Si j'ai compris, un répertoire possède une fonction logique unique avec systemd?
Pré-requis : les fichiers .service fournis par le gestionnaire de paquets sont dans le répertoire /lib/systemd/system/. Les personnalisations réalisées par l'administrateur sont dans le répertoire /etc/systemd/system/
Utiliser des répertoires pour ajouter des dépendances à un service.
Tu souhaites que machin.service dépende de truc.service (c'est-à-dire que le lancement de machin.service lance automatiquement truc.service). Pour se faire, tu as deux méthodes :
La première méthode est de recopier le fichier machin.service dans le répertoire /etc/systemd/system/
$ cp -a /lib/systemd/system/machin.service /etc/systemd/system/
puis d'éditer la copie. Tu ajoutes une ligne « Wants » :
...[Unit]Wants=truc.service...
Cette méthode présente malheureusement un inconvénient : si ton gestionnaire de paquets met à jour le fichier machin.service (dans /lib/systemd/system/), c'est toujours l'ancienne version du fichier (que tu as recopiée dans /etc/systemd/system/) que tu utiliseras.
Pour résoudre ce problème, on utilise une seconde méthode, basée sur les répertoires. On crée un répertoire /etc/systemd/system/machin.service.wants/, et on y met un lien symbolique truc.service qui pointe vers truc.service. Ça donne ceci :
$ ls -l /etc/systemd/system/machin.service.wants/
truc.service -> /lib/systemd/system/truc.service
De cette façon, le lancement de machin.service implique le lancement de truc.service.
Utiliser des répertoires pour ajouter des options à un service (sans écraser les options déjà présentes)
Tu souhaites ajouter 3 options au service bidule. Crée le répertoire /etc/systemd/system/bidule.service.d/. Dans ce répertoire, tu crées un fichier perso.conf qui contiendra les 3 options en question :
[Unit]Description=Service bidule, avec mes personnalisations[Service]ExecStartPost=/usr/bin/beep -l100 -r2 TTYVTDisallocate=noTimeoutStopSec=30
Ces options se superposeront à celles contenues dans le fichier bidule.service (qui est dans le répertoire /lib/systemd/system/).
Pour conclure : remarquez qu'il est possible d'utiliser les fichiers de personnalisation pour créer des dépendances entre services. Pour le service zouzou.service, ça donnerait ceci :
Dans ce cas, le lancement de zouzou.service implique le lancement de biscotte.service et tartine.service. De plus, zouzou.service est lancé après biscotte.service et avant tartine.service.
[^] # Utilisation des répertoires
Posté par Sylvain Blandel . En réponse à la dépêche systemd pour les administrateurs, partie 1 et 2. Évalué à 10. Dernière modification le 04 août 2014 à 11:04.
Pré-requis : les fichiers
.servicefournis par le gestionnaire de paquets sont dans le répertoire/lib/systemd/system/. Les personnalisations réalisées par l'administrateur sont dans le répertoire/etc/systemd/system/Utiliser des répertoires pour ajouter des dépendances à un service.
Tu souhaites que
machin.servicedépende detruc.service(c'est-à-dire que le lancement demachin.servicelance automatiquementtruc.service). Pour se faire, tu as deux méthodes :La première méthode est de recopier le fichier
machin.servicedans le répertoire/etc/systemd/system/puis d'éditer la copie. Tu ajoutes une ligne « Wants » :
Cette méthode présente malheureusement un inconvénient : si ton gestionnaire de paquets met à jour le fichier
machin.service(dans/lib/systemd/system/), c'est toujours l'ancienne version du fichier (que tu as recopiée dans/etc/systemd/system/) que tu utiliseras.Pour résoudre ce problème, on utilise une seconde méthode, basée sur les répertoires. On crée un répertoire
/etc/systemd/system/machin.service.wants/, et on y met un lien symboliquetruc.servicequi pointe verstruc.service. Ça donne ceci :De cette façon, le lancement de
machin.serviceimplique le lancement detruc.service.Utiliser des répertoires pour ajouter des options à un service (sans écraser les options déjà présentes)
Tu souhaites ajouter 3 options au service bidule. Crée le répertoire
/etc/systemd/system/bidule.service.d/. Dans ce répertoire, tu crées un fichierperso.confqui contiendra les 3 options en question :Ces options se superposeront à celles contenues dans le fichier
bidule.service(qui est dans le répertoire/lib/systemd/system/).Pour conclure : remarquez qu'il est possible d'utiliser les fichiers de personnalisation pour créer des dépendances entre services. Pour le service
zouzou.service, ça donnerait ceci :Dans ce cas, le lancement de
zouzou.serviceimplique le lancement debiscotte.serviceettartine.service. De plus,zouzou.serviceest lancé aprèsbiscotte.serviceet avanttartine.service.