Чи повинні файли системних одиниць перезавантажуватися при зміні?


138

Скажімо, я пишу mine.serviceфайл. Тоді я використовую systemctl enable mine.service.

Якщо згодом я вирішу редагувати mine.service, чи потрібно мені сказати, systemdщо це mine.serviceбуло змінено? Якщо так, то як це зробити?

Відповіді:


169

Після того, як ви внесете зміни до свого одиничного файлу, слід запустити systemctl daemon-reload, як описано тут .

daemon-reload
Перезавантажте конфігурацію системного менеджера. Це повторно запустить усі генератори (див. Systemd.generator (7) ), перезавантажить всі файли одиниць та відтворить все дерево залежності. Поки демон перезавантажується, всі сокети, які систематизовані, слухають від імені користувальницької конфігурації, залишаться доступними.

Потім ви можете перезапустити (або перезавантажити) свою послугу за бажанням

systemctl restart your-service-name

(daemon-reload не перезавантажить / не перезапустить самі сервіси, просто проінформує системного про нову конфігурацію)


2
Я виявив, що мені також потрібно запустити, systemctl restartщоб фактично перезапустити саму послугу ...
hwjp

3
На всякий випадок, daemon-reloadне є універсальним, потрібно запускатись systemctl --user daemon-reloadдля обслуговування користувачів.
Олег Єремеєв

Як зауваження, він також "видаляє попередню конфігурацію, створену генераторами", перед тим, як їх повторно
поправити

8

Як додаток до відповіді вище: Якщо ви щось змінили в [Install]директиві, вам може знадобитися запустити sudo systemctl reenable YOURUNITFILE, щоб відтворити посилання в каталогах .target.


Це зробило трюк для мене! Не зрозумів, чому systemctl не перезавантажував службовий файл.
antonagestam
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.