Failed with result «success»: странное сочетание в журнале
Сочетание сбоя с результатом «успех» выглядит противоречиво, но объясняется просто: процесс завершился нулевым кодом, а systemd ожидал, что служба продолжит работать. Результат описывает завершение процесса, а состояние — ожидания в описании unit.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Тип службы не соответствует поведению программы
Программа ушла в фон и завершила исходный процесс нулевым кодом. Для простого типа это конец службы.
-
Оставаться активной после завершения не задано
Для одноразовых задач завершение нормально, но состояние станет неактивным. Если от службы ждут активного состояния, нужен отдельный параметр.
-
Служба остановлена извне, а не упала
Результат «успех» бывает и при штатной остановке. Тогда искать сбой не нужно вовсе.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Тип службы и точные значения результата и кода завершения.
systemctl show myapp.service -p Type -p Result -p ExecMainCode -p ExecMainStatusПоследовательность событий: завершение, остановка, перезапуск.
journalctl -u myapp.service -n 30 --no-pagerСохранение состояния и конфликтующие unit.
systemctl show myapp.service -p RemainAfterExit -p ConflictedByРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Программа ушла в фон и завершила исходный процесс нулевым кодом. Для простого типа это конец службы.
- Как проверить
-
Посмотрите тип службы и коды завершения.
systemctl show myapp.service -p Type -p Result -p ExecMainCode -p ExecMainStatus
- Как исправить
- Приведите тип в соответствие с поведением программы или запретите ей уходить в фон. Для программ с фоновым режимом нужен другой тип или отключение фона.
- Почему происходит
- Для одноразовых задач завершение нормально, но состояние станет неактивным. Если от службы ждут активного состояния, нужен отдельный параметр.
- Как проверить
-
Посмотрите тип и параметр сохранения состояния.
systemctl show myapp.service -p Type -p RemainAfterExit
- Как исправить
-
Задайте сохранение активного состояния после завершения для одноразовых задач, чей результат должен быть виден.
[Service] Type=oneshot RemainAfterExit=yes
- Почему происходит
- Результат «успех» бывает и при штатной остановке. Тогда искать сбой не нужно вовсе.
- Как проверить
-
Посмотрите, кто остановил службу.
journalctl -u myapp.service -n 30 --no-pager | grep -iE "Stopping|Stopped|Deactivated"
- Как исправить
- Проверьте, не остановил ли службу другой unit через конфликт или зависимость. Это частая причина «внезапных» остановок без ошибок.
Пример вывода
Программа ушла в фон, исходный процесс завершился нулевым кодом. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd[1]: myapp.service: Succeeded.
systemd[1]: myapp.service: Failed with result 'success'.
systemd[1]: Stopped myapp.service - My application.
$ systemctl show myapp.service -p Type -p Result
Type=notify
Result=success
Связанные ошибки
- status=0/SUCCESS, но служба считается упавшей Программа завершилась успешно, а systemctl показывает inactive или failed. Разбор: Type=simple против forking, RemainAfterExit, демонизация.
- Одноразовая задача: как не получить ложный сбой Правильная настройка Type=oneshot: RemainAfterExit, коды возврата, зависимости и вызов по таймеру.
- Failed with result 'exit-code' Состояние exit-code: служба завершилась с ненулевым кодом. Что это сообщение значит и где искать настоящую причину.
- Apache: Invalid command — не включён модуль Apache не запускается: директива требует модуль, который не подключён. Как найти нужный модуль и включить.
- Apache: правила .htaccess не действуют Файл .htaccess игнорируется: запрещён параметром AllowOverride, нет нужного модуля, файл не читается.
- Configuration file is marked executable Предупреждение о правах: unit-файл помечен исполняемым. Откуда берётся и почему это стоит исправить.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- Docker: unable to configure the Docker daemon with file daemon.json Демон Docker не запускается из-за ошибки в /etc/docker/daemon.json: неверный JSON или неизвестный ключ.
Источники
-
systemd.service(5)
Типы служб и их ожидания от процесса. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Проверено на systemd 255: сочетание возникает при несоответствии типа поведению программы.