• [^] # Utilisation des répertoires

    Posté par . 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.

    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=no
    TimeoutStopSec=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 :

    $ cat /etc/systemd/system/zouzou.service.d/perso.conf
    
    [Unit]
    Wants=biscotte.service tartine.service
    After=biscotte.service
    Before=tartine.service

    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.