systemd Linux с systemd (конкретный дистрибутив и версия могут отличаться)

После правки unit-файла systemd использует старую конфигурацию

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Изменения в основном unit-файле или override-файле записаны, но процесс запущен с прежними параметрами. Отличайте перечитывание конфигурации systemd от перезапуска самого приложения.

В этой статье
  1. Как распознать проблему и где применимы действия
  2. Возможные причины и диагностические признаки
  3. Пошаговая диагностика и исправление
  4. Как проверить, что проблема действительно устранена
  5. Если результат не получен

#Как распознать проблему и где применимы действия

Изменения в основном unit-файле или override-файле записаны, но процесс запущен с прежними параметрами. Отличайте перечитывание конфигурации systemd от перезапуска самого приложения. Перед выполнением определите название программы, редакцию Linux и управляющий сервис. Значения примеров в командах не являются готовой конфигурацией вашего устройства.

#Возможные причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Менеджер не перечитал файлыПосле сохранения файл уже новый, а Loaded/NeedDaemonReload указывают старые настройкиВыполнить daemon-reload и вновь посмотреть свойства
Изменён другой файлsystemctl cat указывает не тот путь, который редактировалиОпределить FragmentPath и DropInPaths
Старый процесс ещё работаетsystemctl show уже отражает новую директиву, но команда процесса осталась прежнейСпланировать адресный restart после проверки

#Пошаговая диагностика и исправление

  1. Шаг 1. Посмотрите действующие путиОткройте терминал на сервере. Замените UNIT точным именем службы из systemctl list-units. FragmentPath — основной файл, DropInPaths — надстройки. Если путь отличается от редактированного, исправляли не ту конфигурацию.
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    UNIT='имя.service'; systemctl show "$UNIT" -p FragmentPath -p DropInPaths -p NeedDaemonReload
  1. Шаг 2. Сравните объединённый текстКоманда выводит исходный unit и все надстройки в порядке применения. Найдите изменённую директиву. Если её нет, проверьте название и расширение конфигурационного файла .conf.
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    UNIT='имя.service'; systemctl cat "$UNIT"
  1. Шаг 3. Проверьте ошибки синтаксисаДля локального основного файла найдите путь FragmentPath из первого шага и подставьте его; предупреждения о неизвестных параметрах нужно исправить до обновления. Для пакетного unit используйте фактический путь, не выдуманный. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    sudo systemd-analyze verify /etc/systemd/system/имя.service
  1. Шаг 4. Перечитайте конфигурацию менеджераЕсли предыдущие проверки пройдены и есть права администратора, daemon-reload обновит сведения о unit-файлах; это не перезапустит программу. После команды NeedDaemonReload должен стать no. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    sudo systemctl daemon-reload
    UNIT='имя.service'; systemctl show "$UNIT" -p NeedDaemonReload

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Шаг 5. Убедитесь, что параметр применёнВторой раз сравните объединённый файл и свойства. Для ExecStart воспользуйтесь show; если значение всё ещё неверно, проверьте другие drop-in-файлы, способные переопределять его.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    UNIT='имя.service'; systemctl show "$UNIT" -p ExecStart -p WorkingDirectory -p User
  1. Шаг 6. Перезапустите только нужный сервис после согласования простояЕсли конфигурация приложения не подхватывается динамически, нужен restart именно этой службы: открытые соединения могут оборваться. Для SSH, сети и хранилища обеспечьте запасной вход. При неудаче восстановите предыдущий файл из копии. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    UNIT='имя.service'; sudo systemctl restart "$UNIT"
    systemctl status "$UNIT" --no-pager -l

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как проверить, что проблема действительно устранена

После restart повторите systemctl show и проверьте функцию приложения, а не только строку active. Ошибки смотрите в journalctl -u ИМЯ.service -b. Отмена — восстановить сохранённый unit/drop-in, daemon-reload, затем контролируемый restart.

#Если результат не получен

Вернитесь к самому раннему отличающемуся результату диагностики и проверьте точный текст ошибки, текущую загрузку и фактическую версию программы. Не повторяйте опасную команду с другими правами наугад. Если это рабочий сервер, передайте администратору обезличенные отрывки журнала за момент сбоя и уже выполненные действия.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.