status=3/NOTIMPLEMENTED в systemd
Код 3 значит «действие не реализовано». В unit-файлах он появляется, когда службе приказывают то, чего она не умеет: чаще всего перезагрузку настроек через ExecReload=, которую программа не поддерживает.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Служба не умеет перезагружать настройки
Не всякая программа умеет перечитывать файл настроек по сигналу. Обёртка отвечает, что действие не поддерживается, и возвращает 3.
-
Обёртка запускается с неподдерживаемым аргументом
Init-скрипты понимают ограниченный набор команд. Аргумент вроде
statusилиtry-restartможет быть не реализован.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Показывает, какой шаг вернул код 3.
systemctl status myapp.service -l --no-pagerУмеет ли служба перезагружать настройки с точки зрения systemd.
systemctl show myapp.service -p ExecReload -p CanReloadРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Не всякая программа умеет перечитывать файл настроек по сигналу. Обёртка отвечает, что действие не поддерживается, и возвращает 3.
- Как проверить
-
Посмотрите, задан ли
ExecReload=и что он вызывает.systemctl cat myapp.service | grep -i execreload
- Как исправить
-
Либо уберите
ExecReload=и перезапускайте службу целиком, либо укажите настоящий способ: обычно это сигнал HUP главному процессу.ExecReload=/bin/kill -HUP $MAINPID
- Почему происходит
- Init-скрипты понимают ограниченный набор команд. Аргумент вроде
statusилиtry-restartможет быть не реализован.
- Как проверить
-
Посмотрите, с каким аргументом вызывается обёртка.
systemctl cat myapp.service | grep -E "^Exec"
- Как исправить
- Замените вызовы обёртки прямыми командами в unit-файле: systemd умеет останавливать и перезапускать процессы сам.
Пример вывода
Попытка перезагрузить настройки службы, которая этого не умеет. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× myapp.service - My application
Active: failed (Result: exit-code) since Mon 2026-09-15 12:40:07 MSK; 1s ago
Process: 10600 ExecReload=/usr/sbin/myapp-wrapper reload (code=exited, status=3/NOTIMPLEMENTED)
myapp-wrapper[10600]: reload is not supported
systemd[1]: myapp.service: Control process exited, code=exited, status=3/NOTIMPLEMENTED
Связанные ошибки
- status=7/NOTRUNNING в systemd Код 7/NOTRUNNING по соглашению LSB: программа не запущена. Обычно приходит от ExecStop или ExecReload, а не от запуска.
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- signal=HUP (status=1/HUP) в systemd Процесс службы завершён сигналом HUP. Обычно это перезагрузка настроек, которую программа поняла как команду выйти.
- status=4/NOPERMISSION в systemd Код 4/NOPERMISSION: программа сообщила о недостатке прав. По соглашению LSB это «у пользователя недостаточно привилегий».
- status=5/NOTINSTALLED и status=6/NOTCONFIGURED в systemd Коды 5 и 6 по соглашению LSB: программа не установлена или не настроена. Что это значит на практике и как проверить.
- status=0/SUCCESS, но служба считается упавшей Программа завершилась успешно, а systemctl показывает inactive или failed. Разбор: Type=simple против forking, RemainAfterExit, демонизация.
- status=126 в systemd: файл не исполняется Код 126: команда найдена, но выполнить её нельзя. Отличие от 127 и от 203/EXEC, разбор причин.
- status=127 в systemd: команда не найдена Код 127 без имени: оболочка не нашла команду. Появляется, когда ExecStart запускает скрипт или sh -c, а внутри команды нет.
Источники
-
systemd.exec(5)
Класс LSB: код 3 — действие не реализовано. -
systemd.service(5)
ExecReload= и подстановка $MAINPID. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено на обёртке без поддержки reload.