Ho un sacco di file di servizio in /etc/systemd/service/myapp.*.service
Ognuno ha una linea che assomiglia a...
User=Foo
... e devo cambiare tutti questi file .service in modo che tutti dicano...
User=Bar
Come faccio a farlo in modo efficiente?
Risposta accettata:
Chi dice che devi cambiare i file? ☺
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
Recuperare la definizione del servizio vanilla è un po' più semplice in questo modo.
rm -- /etc/systemd/service/myapp.*.service.d/change-user.conf
Rendendoli tutti un unico file che si applica a tutta una serie di servizi è ovviamente solo un semplice esercizio nell'uso dei collegamenti reali.
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
Questo è ovviamente il modo ufficiale per fare questo genere di cose con le unità fornite dal pacchetto e generate dal runtime, inoltre. Si suppone che non per modificare tali file di unità.
Ulteriori letture
- Lennart Poettering (07-10-2013).
systemd.unit
. pagine di manuale di sistema. freedesktop.org.