Failed with result 'signal'
Состояние signal значит, что процесс не вышел сам, а был завершён сигналом — и дамп памяти при этом не сохранялся. Дальше разбор идёт по имени сигнала: TERM обычно посылает systemd при остановке, KILL — ядро или таймаут, SYS — фильтр системных вызовов.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Сигнал послал systemd при остановке или таймауте
TERM приходит при
systemctl stop, при перезапуске и по истечении таймаута запуска. Это самая частая причина, и она видна по соседним строкам журнала. -
Процесс убит ядром или внешней командой
KILL приходит от OOM-killer, от
kill -9или от сценария обслуживания. Программа не получает управления и ничего не записывает. -
Сработало ограничение изоляции
Сигнал SYS означает запрет системного вызова фильтром seccomp. Служба стартует, но умирает на первой запрещённой операции.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Точные значения: код killed и номер сигнала без разбора текста статуса.
systemctl show myapp.service -p Result -p ExecMainCode -p ExecMainStatusКонтекст: остановка по команде выглядит иначе, чем внезапная смерть.
journalctl -u myapp.service -n 50 --no-pagerЕсли дампы включены, а в состоянии signal дампа нет, значит сигнал был из тех, что дамп не создают — например TERM или KILL.
coredumpctl list --no-pager | tail -5Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- TERM приходит при
systemctl stop, при перезапуске и по истечении таймаута запуска. Это самая частая причина, и она видна по соседним строкам журнала.
- Как проверить
-
Посмотрите имя сигнала и контекст.
systemctl show myapp.service -p ExecMainCode -p ExecMainStatus -p Result journalctl -u myapp.service -n 40 --no-pager
- Как исправить
-
Если остановка была штатной, исправлять нечего. Если это таймаут — увеличивайте
TimeoutStartSec=или разбирайтесь, почему служба не сообщает о готовности.
- Почему происходит
- KILL приходит от OOM-killer, от
kill -9или от сценария обслуживания. Программа не получает управления и ничего не записывает.
- Как проверить
-
Поищите след OOM-killer и сравните время с действиями администраторов.
journalctl -k -b --no-pager | grep -i "killed process"
- Как исправить
- При нехватке памяти правьте пределы и потребление, при внешних командах — сценарии: остановку службы должен выполнять systemctl.
- Почему происходит
- Сигнал SYS означает запрет системного вызова фильтром seccomp. Служба стартует, но умирает на первой запрещённой операции.
- Как проверить
-
Посмотрите записи ядра про seccomp.
journalctl -k -b --no-pager | grep -i seccomp | tail -5
- Как исправить
-
Расширьте
SystemCallFilter=нужным набором вызовов вместо полного снятия фильтра.
Пример вывода
Служба убита сигналом KILL, состояние результата — signal. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× myapp.service - My application
Active: failed (Result: signal) since Mon 2026-09-15 19:22:41 MSK; 2s ago
Main PID: 19900 (code=killed, signal=KILL)
systemd[1]: myapp.service: Main process exited, code=killed, status=9/KILL
systemd[1]: myapp.service: Failed with result 'signal'.
Связанные ошибки
- signal=KILL (status=9/KILL) в systemd Процесс службы убит сигналом KILL. Кто мог его послать: OOM-killer, таймаут остановки systemd, администратор.
- signal=TERM (status=15/TERM) в systemd Процесс службы завершён сигналом TERM. Когда это нормальная остановка, а когда признак проблемы.
- Failed with result 'core-dump' Состояние core-dump: процесс службы аварийно завершился и сохранил дамп памяти. Как открыть дамп и прочитать трассировку.
- Failed with result 'oom-kill' Состояние oom-kill: процесс службы убит из-за нехватки памяти. Как понять, упёрлись в предел службы или в память машины.
- Failed with result 'exec-condition' и condition failed Состояния exec-condition и condition failed: запуск не состоялся, потому что условие не выполнено. Это не сбой, а задуманное поведение.
- Failed with result 'exit-code' Состояние exit-code: служба завершилась с ненулевым кодом. Что это сообщение значит и где искать настоящую причину.
- Failed with result 'protocol' Состояние protocol: служба нарушила договор со systemd. Обычно Type=notify без уведомления или Type=dbus без имени на шине.
- Failed with result 'resources' Состояние resources: systemd не смог выделить ресурсы для запуска службы. Чем отличается от кодов 200-й группы и что проверять.
Источники
-
systemd.service(5)
Значение signal в таблице Result. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Проверено на службе, убитой командой kill -9.