Czy pliki jednostek systemowych muszą zostać ponownie załadowane po modyfikacji?

138

Powiedzmy, że piszę mine.serviceplik. Potem używam systemctl enable mine.service.

Jeśli później zdecyduję się edytować mine.service, czy muszę powiedzieć, systemdże mine.servicezostało zmienione? Jeśli tak, jak to zrobić?

425nesp
źródło

Odpowiedzi:

168

Po wprowadzeniu zmian w pliku jednostki należy uruchomić systemctl daemon-reload, jak opisano tutaj .

daemon-reload
Przeładuj konfigurację menedżera systemowego. Spowoduje to ponowne uruchomienie wszystkich generatorów (patrz systemd.generator (7) ), przeładowanie wszystkich plików jednostek i odtworzenie całego drzewa zależności. Podczas przeładowywania demona wszystkie gniazda systemowe nasłuchują w imieniu konfiguracji użytkownika pozostaną dostępne.

Następnie możesz ponownie uruchomić (lub ponownie załadować) swoją usługę według własnego uznania

systemctl restart your-service-name

(daemon-reload nie przeładuje / nie uruchomi ponownie samych usług, po prostu uświadamia systemdowi nową konfigurację)

GregL
źródło
2
systemctl restart
Przekonałem się,
3
Na wszelki wypadek, daemon-reloadnie jest uniwersalny, muszę uruchomić systemctl --user daemon-reloadusługi dla użytkowników.
Olegs Jeremejevs
Jako notatkę „usuwa poprzednią konfigurację utworzoną przez generatory” przed ich ponownym uruchomieniem: freedesktop.org/software/systemd/man/systemd.generator.html
rogerdpack
8

Jako dodatek do powyższej odpowiedzi: W przypadku zmiany w [Install]dyrektywie może być konieczne uruchomienie sudo systemctl reenable YOURUNITFILEw celu odtworzenia dowiązań symbolicznych w katalogach .target.

HomelessGamer
źródło
To załatwiło sprawę! Nie zrozumiałem, dlaczego systemctl nie ładuje ponownie pliku usługi.
antonagestam