Mám spoustu souborů služeb v /etc/systemd/service/myapp.*.service
Každý z nich má řádek, který vypadá jako…
User=Foo
…a potřebuji změnit všechny tyto soubory .service, aby všechny říkaly…
User=Bar
Jak to mohu udělat efektivně?
Přijatá odpověď:
Kdo říká, že je vůbec potřeba měnit soubory? ☺
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
Získání definice vanilla služby zpět je tímto způsobem poněkud jednodušší.
rm -- /etc/systemd/service/myapp.*.service.d/change-user.conf
To vše vytvoří jeden soubor to platí pro celou řadu služeb je samozřejmě jen jednoduchým cvičením v používání pevných odkazů.
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
Toto je samozřejmě oficiální způsob, jak dělat takové věci s jednotkami dodanými balíčkem a generovanými runtime, navíc. Předpokládá se, že ne změnit takové soubory jednotek.
Další čtení
- Lennart Poettering (2013-10-07).
systemd.unit
. systémové manuálové stránky. freedesktop.org.
Linux – která data by měla být vyloučena ze souborů protokolů, chybových zpráv atd., pokud jsou zveřejněna online?
Parametr _path_files a Compadd Ignore-files?