Zainstalowałem pimd
usługę za pomocą apt
. Jest to dostarczane z systemd
plikiem jednostki nadrzędnej ( /lib/systemd/system/pimd.service
).
Chcę, aby usługa została ponownie uruchomiona, gdy z jakiegoś powodu zostanie zabita, dlatego chcę dodać linię Restart = always
do pliku jednostkowego.
Nie chcę jednak modyfikować pliku jednostki nadrzędnej.
Czy istnieje jakieś obejście tego problemu?
Odpowiedzi:
Masz dwie opcje:
Skopiuj plik jednostki z
/lib/systemd/system/
do/etc/systemd/system/
.Następnie dokonaj modyfikacji,
/etc/systemd/system/pimd.service
aby całkowicie zastąpić pliki plików dostarczone przez opiekuna pakietu.Polecenie
systemctl edit --full <service-name>
automatyzuje to za Ciebie.Możesz zmieniać lub dodawać określone ustawienia konfiguracji dla jednostki, bez konieczności modyfikowania plików jednostki, tworząc
.conf
pliki w katalogu rozwijanym,/etc/systemd/system/<unit-name>.<unit-type>.d/
tj. Tworząc
/etc/systemd/system/pimd.service.d/restart.conf
Polecenie
systemctl edit <service-name>
wykonuje te kroki za Ciebie.Widzieć
man systemd.unit
źródło
systemctl edit <service-name>
systemctl edit --full <service-name>
.Dokumentacja RHEL zaleca dwa sposoby:
/etc/systemd/system/[name-goes-here].service.d/config_name.conf
W takim przypadku plik musiałby zawierać coś takiego:
To właśnie
systemctl edit [name-goes-here]
robi, tworzy ten katalog ioverride.conf
wewnątrz niego.Wypróbowałbym opcję pierwszą, ale oba są wykonalne. Tak czy inaczej pamiętaj, aby uruchomić
systemctl daemon-reload
po wprowadzeniu zmian.Dokumentacja RHEL dotycząca tworzenia i modyfikowania systemowych plików jednostek
źródło
Rozważ użycie skryptu do odczytania konfiguracji nadrzędnej, zmodyfikowania jej i wyplucia do pliku rozwijanego.
Na przykład używam Chef i oto kawałek rubinu (biblioteki), który analizuje plik jednostki systemowej maratonu, aby uzyskać z niego oryginalny plik ExecStart
Następnie w przepisie tworzę plik rozwijany, aby dołączyć opcję do ExecStart
źródło