SystemdDoctor
служба не работает частое состояния коды

Failed with result 'exit-code'

Строка Failed with result 'exit-code' — это итог, а не причина. Она значит, что процесс службы завершился с числом, отличным от нуля, и systemd признал запуск неудачным. Настоящая причина — в самом числе и в сообщениях программы выше.

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

Разбор всегда идёт снизу вверх: сначала находим строку с status=N, затем читаем, что писала служба перед ней. Число до 200 назначила программа, 200 и выше — systemd, не сумев подготовить запуск.

Само состояние exit-code ни на что не указывает, кроме факта. Его полезно знать, чтобы отличать от signal, timeout и oom-kill: там процесс не сам решил завершиться.

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

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

  1. Программа вышла с кодом, который назначила сама (числа до 200)

    Ошибка в настройках, занятый порт, недоступная база, необработанное исключение. Код только помечает неудачу, смысл ему придаёт программа.

  2. systemd не сумел подготовить запуск (числа 200 и выше)

    Коды от 200 назначает сам systemd: он не смог перейти в каталог, сменить пользователя, применить ограничение или запустить файл. Программа при этом не выполнялась.

  3. Код вернула предварительная или завершающая команда

    Неудача ExecStartPre= не даёт службе запуститься вовсе, а неудача ExecStop= помечает упавшей уже остановленную службу. В обоих случаях главный процесс мог быть в полном порядке.

Диагностика

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

Даёт и состояние результата, и число, и шаг — всё, что нужно для первого шага разбора.

systemctl status myapp.service -l --no-pager

Сообщения самой службы: при кодах до 200 причина именно там.

journalctl -u myapp.service -n 60 --no-pager

Показывает имя и класс последнего кода выхода службы, не заставляя искать его в таблице.

systemd-analyze exit-status $(systemctl show myapp.service -p ExecMainStatus --value)

Решение

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

1. Программа вышла с кодом, который назначила сама (числа до 200)
Почему происходит
Ошибка в настройках, занятый порт, недоступная база, необработанное исключение. Код только помечает неудачу, смысл ему придаёт программа.
Как проверить
Найдите число и прочитайте сообщения службы перед ним.
systemctl status myapp.service -l --no-pager | grep -E "status=|Process:"
journalctl -u myapp.service -n 60 --no-pager
Как исправить
Исправляйте то, о чём сообщила программа. Разбор частых чисел: 1 — общая неудача, 2 — недопустимые аргументы, 78 — ошибка настройки.
2. systemd не сумел подготовить запуск (числа 200 и выше)
Почему происходит
Коды от 200 назначает сам systemd: он не смог перейти в каталог, сменить пользователя, применить ограничение или запустить файл. Программа при этом не выполнялась.
Как проверить
Посмотрите имя шага рядом с кодом — оно и есть диагноз.
journalctl -xeu myapp.service --no-pager -n 30 | grep -i "failed at step"
Как исправить
Правьте тот параметр unit-файла, который назван шагом: EXEC — команда запуска, CHDIR — рабочий каталог, USER — пользователь.
3. Код вернула предварительная или завершающая команда
Почему происходит
Неудача ExecStartPre= не даёт службе запуститься вовсе, а неудача ExecStop= помечает упавшей уже остановленную службу. В обоих случаях главный процесс мог быть в полном порядке.
Как проверить
Посмотрите, какая строка Process содержит ненулевой код.
systemctl status myapp.service -l --no-pager | grep "Process:"
Как исправить
Разбирайтесь именно с той командой. Если неудача завершающей команды не важна, поставьте перед ней дефис: ExecStop=-/usr/bin/myapp stop.

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

Служба завершилась с кодом 1, состояние результата — exit-code. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

× myapp.service - My application
     Active: failed (Result: exit-code) since Mon 2026-09-15 19:02:11 MSK; 4s ago
   Main PID: 19400 (code=exited, status=1/FAILURE)

myapp[19400]: fatal: cannot connect to database at 127.0.0.1:5432
systemd[1]: myapp.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: myapp.service: Failed with result 'exit-code'.

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

  • status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
  • status=203/EXEC в systemd Код 203/EXEC означает, что systemd не смог выполнить программу из ExecStart=. Разбор причин: путь, права, интерпретатор, синтаксис оболочки.
  • Failed with result 'signal' Состояние signal: процесс службы завершён сигналом без сохранения дампа. Как узнать, каким сигналом и от кого.
  • Failed with result 'timeout' Состояние timeout: служба не уложилась в отведённое время при запуске, остановке или перезагрузке настроек.
  • Failed with result 'oom-kill' Состояние oom-kill: процесс службы убит из-за нехватки памяти. Как понять, упёрлись в предел службы или в память машины.
  • start-limit-hit: служба заблокирована после серии перезапусков Состояние start-limit-hit и сообщение start request repeated too quickly: systemd перестал перезапускать службу. Как разблокировать и найти исходную причину.
  • Служба active, но не работает: обёртки и oneshot Почему состояние active не означает работающую программу: oneshot с RemainAfterExit, обёртки, потерянный главный процесс.
  • A start job is running: загрузка висит на одной службе Загрузка останавливается с обратным отсчётом: служба не укладывается в таймаут. Как найти виновника и не ждать.

Где встречается чаще всего

Источники

  • systemd.service(5)
    Таблица значений Result: exit-code означает ненулевой код завершения.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • service.c: перечень значений service_result_table исходный код systemd, systemd main
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Сверено с выводом systemctl show -p Result на тестовых unit-файлах.
    собственная проверка, systemd 255
    сверено 15 сентября 2026