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

Параметр не работает: он появился в более новой версии systemd

Документация systemd описывает последнюю версию, а на сервере может стоять версия трёхлетней давности. Незнакомый параметр она просто отбросит с предупреждением в журнале — настройка молча не сработает.

Что это значит

В документации у каждого параметра указано, с какой версии он доступен. Сравнивать нужно с выводом systemctl --version на конкретной машине, а не с версией дистрибутива.

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

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

  1. Параметр появился позже вашей версии

    systemd активно развивается: за каждый выпуск добавляется несколько параметров. На системах с длительной поддержкой разрыв достигает нескольких лет.

  2. Значение параметра новее, чем сам параметр

    Бывает, что параметр есть, а конкретное значение добавили позже: например тип notify-reload или значение strict у отдельных защит.

  3. Unit-файл перенесён с более новой системы

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

Диагностика

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

Версия systemd на этой машине — точка отсчёта для всей документации.

systemctl --version | head -1

Незнакомые параметры и значения.

systemd-analyze verify /etc/systemd/system/myapp.service

Что systemd отбросил при чтении unit-файлов.

journalctl -b --no-pager | grep -iE "Unknown key|unknown lvalue" | head

Решение

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

1. Параметр появился позже вашей версии
Почему происходит
systemd активно развивается: за каждый выпуск добавляется несколько параметров. На системах с длительной поддержкой разрыв достигает нескольких лет.
Как проверить
Посмотрите версию и найдите незнакомые параметры в журнале.
systemctl --version | head -1
journalctl -b --no-pager | grep -iE "Unknown key|unknown lvalue" | head
Как исправить
Найдите замену для своей версии или обновите систему. Часть новых параметров имеет более старые аналоги.
2. Значение параметра новее, чем сам параметр
Почему происходит
Бывает, что параметр есть, а конкретное значение добавили позже: например тип notify-reload или значение strict у отдельных защит.
Как проверить
Посмотрите предупреждения о значении.
systemd-analyze verify /etc/systemd/system/myapp.service 2>&1 | head
Как исправить
Используйте значение, доступное в вашей версии.
3. Unit-файл перенесён с более новой системы
Почему происходит
Файл, написанный для свежего дистрибутива, на старом сервере теряет часть настроек — и незаметно.
Как проверить
Проверьте файл статической проверкой на этой машине.
systemd-analyze verify /etc/systemd/system/myapp.service
Как исправить
Держите unit-файлы согласованными с версией systemd на целевых машинах или проверяйте их при переносе.

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

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

systemd[1]: /etc/systemd/system/myapp.service:12: Unknown key name 'RestartSteps' in section 'Service', ignoring.
systemd[1]: /etc/systemd/system/myapp.service:13: Unknown key name 'MemoryKSM' in section 'Service', ignoring.

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

Источники

  • systemd.directives(7)
    Указатель параметров с версиями появления.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено переносом unit-файла с systemd 255 на систему с systemd 245.
    собственная проверка, systemd 255
    сверено 15 сентября 2026