J'ai un tas de fichiers de service dans /etc/systemd/service/myapp.*.service
Chacun a une ligne qui ressemble à…
User=Foo
…et j'ai besoin de changer tous ces fichiers .service pour qu'ils disent tous…
User=Bar
Comment puis-je le faire efficacement ?
Réponse acceptée :
Qui a dit que vous deviez changer les fichiers du tout ? ☺
find /etc/systemd/service/ -maxdepth 1 -name 'myapp.*.service' | while read -r i do printf '[Service]\nUser=%s\n' 'Bar' > ${i}.d/change-user.conf done
Récupérer la définition du service vanille est un peu plus facile de cette façon.
rm -- /etc/systemd/service/myapp.*.service.d/change-user.conf
Faire de tout cela un seul fichier qui s'applique à tout un tas de services n'est bien sûr qu'un simple exercice d'utilisation des liens physiques.
install -d /etc/systemd/temp printf '[Service]\nUser=%s\n' 'Bar' > /etc/systemd/temp/change-user.conf find /etc/systemd/service/ -maxdepth 1 -name 'myapp.*.service' | while read -r i do ln /etc/systemd/temp/change-user.conf ${i}.d/change-user.conf done
C'est bien sûr la manière officielle de faire ce genre de choses avec les unités fournies par les packages et générées par le runtime. Vous êtes censé pas pour modifier ces fichiers d'unité.
Autres lectures
- Lennart Poettering (2013-10-07).
systemd.unit
. pages de manuel systemd. freedesktop.org.