SystemdDoctor
мешает работе конфигурация выкладка

Приложение не перечитывает настройки по сигналу

Перезагрузка настроек работает только если приложение это умеет. Для большинства прикладных служб её нет, и правки применяются только перезапуском — важно не путать одно с другим при выкладке.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Приложение не обрабатывает сигнал перезагрузки

    Шаблонная команда перезагрузки посылает сигнал, который приложение либо игнорирует, либо понимает как команду выйти.

  2. Настройки читаются один раз при старте

    Даже при поддержке сигнала приложение может перечитывать не всё: часть параметров применяется только при запуске.

  3. Перезапуск рвёт соединения, а перезагрузка не работает

    Тогда нужен другой подход: запуск нового экземпляра рядом и переключение, либо обратный прокси, который держит клиентов.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Умеет ли служба перезагружать настройки.

systemctl show myapp.service -p CanReload -p ExecReload

Что происходило при попытках перезагрузки.

journalctl -u myapp.service -n 30 --no-pager | grep -i reload

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Приложение не обрабатывает сигнал перезагрузки
Почему происходит
Шаблонная команда перезагрузки посылает сигнал, который приложение либо игнорирует, либо понимает как команду выйти.
Как проверить
Посмотрите, что делает команда перезагрузки.
systemctl cat myapp.service | grep -i ExecReload
systemctl show myapp.service -p CanReload
Как исправить
Уберите команду перезагрузки, если приложение её не поддерживает: пусть выкладка использует перезапуск. Ложная возможность опаснее её отсутствия.
2. Настройки читаются один раз при старте
Почему происходит
Даже при поддержке сигнала приложение может перечитывать не всё: часть параметров применяется только при запуске.
Как проверить
Посмотрите, что изменилось после перезагрузки.
journalctl -u myapp.service -n 20 --no-pager | grep -iE "reload|config"
Как исправить
Для таких параметров используйте перезапуск. Это стоит отразить в описании выкладки, чтобы не удивляться.
3. Перезапуск рвёт соединения, а перезагрузка не работает
Почему происходит
Тогда нужен другой подход: запуск нового экземпляра рядом и переключение, либо обратный прокси, который держит клиентов.
Как проверить
Посмотрите, есть ли сокет-активация или прокси впереди.
systemctl show myapp.service -p Sockets
sudo nginx -T 2>/dev/null | grep -c proxy_pass
Как исправить
Сокет-активация позволяет перезапускать службу, не теряя входящие соединения: их держит systemd.

Пример вывода

Перезагрузка настроек прошла, изменения не применились. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

$ sudo systemctl reload myapp.service
$ journalctl -u myapp.service -n 3 --no-pager
systemd[1]: Reloading myapp.service...
systemd[1]: Reloaded myapp.service.
# в журнале приложения — ни строки о перечитывании настроек

Связанные ошибки

Источники

  • systemd.service(5)
    ExecReload= и возможность перезагрузки настроек.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на приложении без обработки сигнала: перезагрузка не даёт эффекта.
    собственная проверка, systemd 255
    сверено 15 сентября 2026