status=6/NOTCONFIGURED
Код 6 означает «установлено, но не настроено»: программа нашла себя, но не нашла настроек, без которых работать не может. На практике его возвращают скрипты и обёртки дистрибутивов, а не сами демоны, поэтому встречается он реже соседних кодов и почти всегда указывает на недоделанную установку.
Что это значит
Соглашение LSB задаёт для служб небольшой набор кодов: 1 — общая ошибка, 2 — неверный аргумент, 3 — не реализовано, 4 — недостаточно прав, 5 — не установлено, 6 — не настроено, 7 — не работает. Код 6 занимает место между «программы нет» и «настройки неверны»: программа есть, но обязательных настроек не существует вовсе.
Разница с соседями важна при разборе. Код 5 означает, что нет самой программы или её пакета. Код 78 из набора BSD означает ошибку в существующих настройках. Код 6 — что настроек не создано: файл отсутствует, пример не переименован, обязательное значение не заполнено. Проверить, как ваша версия systemd называет число, можно командой просмотра кодов выхода.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Файл настроек не создан из примера
Пакеты часто кладут файл с расширением примера и не создают рабочий. Обёртка проверяет наличие рабочего файла и возвращает 6.
-
Обязательное значение не заполнено
Файл есть, но ключевое значение осталось заглушкой. Проверка настроек при запуске отвергает такую конфигурацию.
-
Обёртка дистрибутива не нашла включённого экземпляра
В дистрибутивах с несколькими экземплярами службы обёртка проверяет, объявлен ли хотя бы один. Без объявления она возвращает код 6, хотя сама программа исправна.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Имя и класс кода в том виде, в каком его понимает ваша версия systemd.
systemd-analyze exit-status 6Сообщение программы: без него код 6 не отличить от прочих.
journalctl -u myapp.service -n 40 --no-pagerЧто именно запускается: часто это обёртка, а не сама программа.
systemctl cat myapp.serviceРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Пакеты часто кладут файл с расширением примера и не создают рабочий. Обёртка проверяет наличие рабочего файла и возвращает 6.
- Как проверить
-
Посмотрите каталог настроек и что именно ищет программа.
journalctl -u myapp.service -n 30 --no-pager sudo ls -l /etc/myapp/ 2>/dev/null
- Как исправить
- Создайте рабочий файл настроек из примера и заполните обязательные значения. Копировать пример без правки обычно недостаточно: в нём остаются заглушки.
- Почему происходит
- Файл есть, но ключевое значение осталось заглушкой. Проверка настроек при запуске отвергает такую конфигурацию.
- Как проверить
-
Посмотрите сообщение программы и поищите заглушки в файле.
journalctl -u myapp.service -n 30 --no-pager | tail -15 sudo grep -nE "CHANGEME|changeme|<.*>|TODO" /etc/myapp/*.conf 2>/dev/null
- Как исправить
- Заполните обязательные значения. Полезно, чтобы служба сообщала, какого именно значения не хватает: молчаливый выход с кодом 6 разбирать дольше.
- Почему происходит
- В дистрибутивах с несколькими экземплярами службы обёртка проверяет, объявлен ли хотя бы один. Без объявления она возвращает код 6, хотя сама программа исправна.
- Как проверить
-
Посмотрите, какая команда стоит в unit-файле и что она проверяет.
systemctl cat myapp.service | grep -E "^Exec" sudo ls -l /etc/myapp/conf.d/ 2>/dev/null
- Как исправить
- Объявите экземпляр так, как ожидает обёртка, либо запускайте программу напрямую, минуя её. Обёртки удобны, но прячут причину отказа за одним числом.
Пример вывода
Обёртка не нашла рабочего файла настроек. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× myapp.service - My application
Active: failed (Result: exit-code) since Mon 2026-09-15 17:02:11 MSK; 3s ago
Process: 4600 ExecStart=/usr/sbin/myapp-wrapper start (code=exited, status=6/NOTCONFIGURED)
myapp-wrapper[4600]: /etc/myapp/myapp.conf not found, copy myapp.conf.example and edit it
systemd[1]: myapp.service: Main process exited, code=exited, status=6/NOTCONFIGURED
systemd[1]: myapp.service: Failed with result 'exit-code'.
Связанные ошибки
- status=5/NOTINSTALLED и status=6/NOTCONFIGURED в systemd Коды 5 и 6 по соглашению LSB: программа не установлена или не настроена. Что это значит на практике и как проверить.
- Коды 64–78 в systemd: набор sysexits Коды 64-78 из sysexits.h: USAGE, DATAERR, NOINPUT, UNAVAILABLE, SOFTWARE, OSERR, CONFIG и другие. Что означает каждый и где смотреть причину.
- status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
- status=241/CONFIGURATION_DIRECTORY в systemd Код 241/CONFIGURATION_DIRECTORY: не удалось подготовить каталог настроек службы в /etc из ConfigurationDirectory=.
- Apache: Invalid command — не включён модуль Apache не запускается: директива требует модуль, который не подключён. Как найти нужный модуль и включить.
- Apache: правила .htaccess не действуют Файл .htaccess игнорируется: запрещён параметром AllowOverride, нет нужного модуля, файл не читается.
- Configuration file is marked executable Предупреждение о правах: unit-файл помечен исполняемым. Откуда берётся и почему это стоит исправить.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
Источники
-
systemd.service(5)
Коды выхода LSB и их обработка в systemd. - LSB: коды выхода init-скриптов
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Проверено на systemd 255: `systemd-analyze exit-status 6` даёт NOTCONFIGURED, класс LSB.