LINUX.ORG.RU
ФорумAdmin

Перезагрузка юнитов systemd после изменения конфигов

 , ,


0

3

Прочитал про daemon-reload. Вроде как и с юзерскими юнитами он тоже должен работать. Для теста взял юнит, запустил под юзером, поменял конфиг. Проверяю статус:

Warning: The unit file, source configuration file or drop-ins of backup-journal.timer changed on disk. Run 'systemctl --user daemon-reload' to reload units.

Спасибо, что подсказал. Делаю перезагрузку и проверяю статус

systemctl --user daemon-reload 

systemctl --user status backup-journal.timer 
Warning: The unit file, source configuration file or drop-ins of backup-journal.timer changed on disk. Run 'systemctl --user daemon-reload' to reload units.

Ошибок при перезагрузке нет. Статус все еще отображает, что есть изменения в юните. В журнале по

journalctl --user-unit backup-journal.timer

никаких упоминаний про перезагрузку нет. Как определить, подхватил ли юнит новую конфигурацию? Я имею ввиду средствами мониторинга, а не топорным тестированием сторонними средствами. Почему ищу нетопорные средства, потому что юнитов может быть много, нужно проверять быстро и удобным способом, а не писать тесты для каждого.

Ответ на: комментарий от eternal_sorrow

Тогда я не понял, какой смысл в daemon-reload, если нужно еще и полностью юнит перезапускать? Я с тем же успехом могу просто его перезапустить как в других СИ, результат будет тот же. Мне кажется, судя по описанию, эта функция как раз должна позволять не прерывать работу юнита, но заставлять его перепрочесть конфигурацию для корректировки работы. Я не прав?

PawsOnFire
() автор топика
Ответ на: комментарий от PawsOnFire

Перезапустишь ты всё равно старый юнит.

По daemon-reload перечитываются и перестраиваются зависимости.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Из мана systemctl

 reload PATTERN...
           Asks all units listed on the command line to reload their configuration. Note that this will reload the
           service-specific configuration, not the unit configuration file of systemd. If you want systemd to reload
           the configuration file of a unit, use the daemon-reload command. In other words: for the example case of
           Apache, this will reload Apache's httpd.conf in the web server, not the apache.service systemd unit file.

           This command should not be confused with the daemon-reload command.
daemon-reload
           Reload the systemd manager configuration. This will rerun all generators (see systemd.generator(7)),
           reload all unit files, and recreate the entire dependency tree. While the daemon is being reloaded, all
           sockets systemd listens on behalf of user configuration will stay accessible.

           This command should not be confused with the reload command.

Мне нужно выполнить systemctl reload blabla.service для перезагрузки конфига? А daemon-reload в каком тогда смысле reload all unit files?

PawsOnFire
() автор топика
Ответ на: комментарий от PawsOnFire

daemon-reload перезагружает сам файл юнита (your-daemon.service), ну и drop-in’ы если они у него есть.

reload это как раз перезагрузка конфига демона без перезапуска. демон естественно должен поддерживать это.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от PawsOnFire

При reload обычно посылается SIGHUP главному PID. Демон должен обработать этот сигнал и перечитать свои конфиги или сделать что-то похожее в зависимости от логики своей работы.

daemon-reload - это уже внутренняя команда systemd, по которой перечитываются все юниты, перестраиваются все зависимости и вот это всё.

Radjah ★★★★★
()

@Radjah, @eternal_sorrow, тогда объясните мне, почему мой таймер из ОП рапортует о необходимости применить daemon-reload, когда я уже его применил? По идее он должен был перезапуститься…

PawsOnFire
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.