Ich habe eine Reihe von Dienstdateien in /etc/systemd/service/myapp.*.service
Jeder hat eine Zeile, die aussieht wie …
User=Foo
… und ich muss all diese .service-Dateien ändern, damit sie alle sagen …
User=Bar
Wie mache ich das effizient?
Akzeptierte Antwort:
Wer sagt, dass Sie die Dateien überhaupt ändern müssen? ☺
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
Auf diese Weise ist es etwas einfacher, die Vanilla-Service-Definition zurückzubekommen.
rm -- /etc/systemd/service/myapp.*.service.d/change-user.conf
All dies zu einer einzigen Datei machen das für eine ganze Reihe von Diensten gilt, ist natürlich nur eine einfache Übung in der Verwendung von Hardlinks.
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
Dies ist natürlich der offizielle Weg, um so etwas mit von Paketen bereitgestellten und zur Laufzeit generierten Units zu tun. Das sollten Sie nicht um solche Unit-Dateien zu ändern.
Weiterführende Literatur
- Lennart Pöttering (2013-10-07).
systemd.unit
. systemd Handbuchseiten. freedesktop.org.