Les fichiers d'unité systemd doivent-ils être rechargés lorsqu'ils sont modifiés?

138

Disons que j'écris un mine.servicefichier. Ensuite j'utilise systemctl enable mine.service.

Si je décide plus tard d’éditer mine.service, dois-je dire systemdque cela a mine.serviceété changé? Si oui, comment je fais ça?

425nesp
la source

Réponses:

169

Après avoir modifié votre fichier d'unité, vous devez exécuter la systemctl daemon-reloadprocédure décrite ci- dessous .

daemon-reload
Recharger la configuration du gestionnaire systemd. Cela relancera tous les générateurs (voir systemd.generator (7) ), rechargera tous les fichiers de l'unité et recréera l'intégralité de l'arbre de dépendance. Pendant le rechargement du démon, tous les sockets que systemd écoute au nom de la configuration de l'utilisateur resteront accessibles.

Vous pouvez ensuite redémarrer (ou recharger) votre service comme vous le souhaitez avec

systemctl restart your-service-name

(daemon-reload ne rechargera pas / ne redémarrera pas les services eux-mêmes, il informera simplement systemd de la nouvelle configuration)

GregL
la source
2
J'ai trouvé que j'avais aussi besoin de lancer un service systemctl restartpour redémarrer le service lui-même ...
hwjp
3
Juste au cas où, daemon-reloadn’est pas universel, il faut courir systemctl --user daemon-reloadpour des services utilisateurs.
Olegs Jeremejevs
Notez également qu'il "supprime la configuration précédente créée par les générateurs" avant de les
réexécuter
8

En complément de la réponse ci-dessus: Si vous avez modifié quelque chose dans la [Install]directive, vous devrez peut-être vous exécuter sudo systemctl reenable YOURUNITFILEpour recréer les liens symboliques dans les répertoires .target.

HomelessGamer
la source
Cela a fait le tour pour moi! Nous n'avons pas compris pourquoi systemctl ne rechargeait pas le fichier de service.
antonagestam