daemon-reload в systemd: перечитать конфигурацию unit
Заставляет менеджер systemd перечитать все unit-файлы с диска. Нужна после любой правки unit-файлов и drop-in; на работу самих служб не влияет.
Что делает
Три похожие команды делают разное. daemon-reload перечитывает unit-файлы. systemctl reload имя заставляет службу перечитать свои настройки. daemon-reexec перезапускает сам менеджер systemd — нужна редко, в основном после обновления systemd.
Забытая перезагрузка конфигурации — самая частая причина «правка не применилась». systemd заметит расхождение и напишет предупреждение в выводе состояния, но продолжит работать со старой версией.
Где ставится. Команда в терминале. Проверить необходимость: systemctl show имя -p NeedDaemonReload.
Значения
| Значение | Что происходит |
|---|---|
systemctl daemon-reload | перечитать unit-файлы. |
systemctl reload имя | служба перечитывает свои настройки. |
systemctl reload-or-restart имя | перезагрузить настройки, а если нельзя — перезапустить. |
systemctl daemon-reexec | перезапустить сам менеджер systemd. |
Пример
Правильный порядок после правки unit-файла.
sudo systemctl edit myapp.service
sudo systemctl daemon-reload
sudo systemctl restart myapp.service
systemctl show myapp.service -p NeedDaemonReload
Последняя команда должна напечатать «no». Если «yes» — конфигурация всё ещё не перечитана.
Типичные ошибки
Перезапуск службы без перезагрузки конфигурации применяет прежнюю версию unit-файла.
daemon-reload не перезапускает службы: новые настройки вступят в силу только после перезапуска.
Правка fstab тоже требует этой команды: unit точек монтирования генерируются из него.
Связанные ошибки
- Warning: The unit file … changed on diskПредупреждение о том, что unit-файл изменился на диске: systemd работает со старой версией. Когда нужен daemon-reload.
- Unit … not found: unit-файл не найденСообщение Unit not found при запуске службы: файла нет, не выполнен daemon-reload, опечатка в имени или не указано расширение.
- Переопределение через drop-in не применяетсяПравка через systemctl edit или файл в каталоге .d не действует: разбор причин, включая особенность списочных параметров и ExecStart.
Рядом стоящие параметры
Источники
- systemctl(1)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)