ExecReload=: перезагрузка настроек службы без перезапуска
Задаёт команду, которая выполняется при systemctl reload. Обычно это посылка сигнала главному процессу, по которому программа перечитывает настройки, не прерывая работу.
Проверено на тестовой машине: systemd 255, Ubuntu 24.04. Сверено с документацией 15 сентября 2026. Как мы проверяем
Что делает
Перезагрузка настроек полезна там, где перезапуск дорог: веб-серверы не рвут соединения, балансировщики не теряют запросы. Но работает она только если программа это поддерживает: реакция на сигнал должна быть предусмотрена в ней самой.
Если программа не умеет перечитывать настройки, параметр лучше не задавать вовсе. Иначе systemctl reload завершит службу: сигнал HUP по умолчанию убивает процесс.
Где ставится. В секции [Service]. Без него команда systemctl reload для службы недоступна.
Значения
| Значение | Что происходит |
|---|---|
/bin/kill -HUP $MAINPID | самый частый вид: сигнал главному процессу. |
/usr/sbin/nginx -s reload | собственная команда программы, если она есть. |
/bin/kill -USR2 $MAINPID | мягкая замена рабочих процессов у части служб. |
Пример
Перезагрузка настроек сигналом и проверка перед ней.
[Service]
ExecStart=/usr/sbin/nginx -g 'daemon off; master_process on;'
ExecReload=/usr/sbin/nginx -t
ExecReload=/bin/kill -s HUP $MAINPID
Две строки выполняются по порядку: сначала проверка конфигурации, затем сигнал. Если проверка не прошла, сигнал не посылается и работающая служба остаётся с прежними настройками.
Типичные ошибки
Шаблонное ExecReload=/bin/kill -HUP $MAINPID у программы без обработки этого сигнала завершает службу при каждой перезагрузке настроек.
Подстановка $MAINPID пуста, если служба не запущена: команда перезагрузки настроек для остановленной службы вернёт ошибку.
Кавычки вокруг $MAINPID мешают подстановке. Писать надо без них.
Перезагрузка настроек не перечитывает unit-файл. Для этого нужен systemctl daemon-reload, и это совсем другая команда.
Связанные ошибки
- signal=HUP (status=1/HUP) в systemdПроцесс службы завершён сигналом HUP. Обычно это перезагрузка настроек, которую программа поняла как команду выйти.
- status=3/NOTIMPLEMENTED в systemdКод 3/NOTIMPLEMENTED по соглашению LSB: запрошенное действие не поддерживается. Обычно это reload у службы, которая его не умеет.
- Warning: The unit file … changed on diskПредупреждение о том, что unit-файл изменился на диске: systemd работает со старой версией. Когда нужен daemon-reload.
Рядом стоящие параметры
Где важен на практике
Источники
- systemd.service(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)