Нужно ли перезагружать файлы модулей systemd после изменения?


138

Допустим, я пишу mine.serviceфайл. Тогда я использую systemctl enable mine.service.

Если я позже решу отредактировать mine.service, должен ли я сказать, systemdчто это mine.serviceбыло изменено? Если да, то как мне это сделать?

Ответы:


169

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

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

Затем вы можете перезапустить (или перезагрузить) свой сервис по своему желанию с

systemctl restart your-service-name

(daemon-reload не будет перезагружать / перезапускать сами сервисы, просто уведомляет systemd о новой конфигурации)


2
Я обнаружил, что мне также нужно запустить a, systemctl restartчтобы фактически перезапустить саму службу ...
hwjp

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

Как примечание, он также «удаляет предыдущую конфигурацию, созданную генераторами», прежде чем перезапустить их: freedesktop.org/software/systemd/man/systemd.generator.html
rogerdpack

8

В дополнение к ответу выше: Если вы что-то изменили в [Install]директиве, вам может потребоваться запустить ее sudo systemctl reenable YOURUNITFILE, чтобы воссоздать символические ссылки в каталогах .target.


Это помогло мне! Не понял, почему systemctl не перезагружал служебный файл.
антагонестам
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.