Job for … failed because a fatal signal was delivered или canceled
Сообщение об отменённом задании означает, что операция не была выполнена: её вытеснила другая или она была прервана. Частая причина — несколько команд управления службой подряд.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Задание вытеснено другой операцией
Режим постановки задания по умолчанию заменяет очередь. Если вы запустили перезапуск, а затем остановку, первое задание отменится.
-
Служба перезапускается автоматически и мешает вашей команде
При включённом перезапуске systemd может поставить своё задание, вытеснив ваше.
-
Задание отменено сигналом
Прерывание команды в терминале отменяет задание, но операция могла частично выполниться.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Текущие задания.
systemctl list-jobsИстория заданий по этой службе.
journalctl -u myapp.service -n 40 --no-pager | grep -i jobРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Режим постановки задания по умолчанию заменяет очередь. Если вы запустили перезапуск, а затем остановку, первое задание отменится.
- Как проверить
-
Посмотрите историю операций.
journalctl -u myapp.service -n 30 --no-pager | grep -iE "job|canceled"
- Как исправить
- Не отправляйте команды управления подряд без ожидания. В скриптах используйте ключ ожидания завершения.
- Почему происходит
- При включённом перезапуске systemd может поставить своё задание, вытеснив ваше.
- Как проверить
-
Посмотрите политику перезапуска и счётчик.
systemctl show myapp.service -p Restart -p NRestarts
- Как исправить
- Остановите службу перед вмешательством или временно отключите автоперезапуск.
- Почему происходит
- Прерывание команды в терминале отменяет задание, но операция могла частично выполниться.
- Как проверить
-
Посмотрите фактическое состояние службы.
systemctl status myapp.service --no-pager | head -6
- Как исправить
- Проверьте состояние и повторите операцию целиком: частично выполненная остановка оставляет систему в промежуточном виде.
Пример вывода
Задание вытеснено следующей командой. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
$ sudo systemctl restart myapp.service & sudo systemctl stop myapp.service
Job for myapp.service canceled.
systemd[1]: myapp.service: Job myapp.service/restart canceled.
Связанные ошибки
- Dependency failed for … и результат 'dependency' Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- Failed with result 'timeout' Состояние timeout: служба не уложилась в отведённое время при запуске, остановке или перезагрузке настроек.
- Transaction for … is destructive systemd отказывается выполнить операцию: она остановила бы что-то нужное. Разбор и безопасные варианты.
- Failed with result 'core-dump' Состояние core-dump: процесс службы аварийно завершился и сохранил дамп памяти. Как открыть дамп и прочитать трассировку.
- Failed with result 'exec-condition' и condition failed Состояния exec-condition и condition failed: запуск не состоялся, потому что условие не выполнено. Это не сбой, а задуманное поведение.
- Failed with result 'exit-code' Состояние exit-code: служба завершилась с ненулевым кодом. Что это сообщение значит и где искать настоящую причину.
- Failed with result 'oom-kill' Состояние oom-kill: процесс службы убит из-за нехватки памяти. Как понять, упёрлись в предел службы или в память машины.
- Failed with result 'protocol' Состояние protocol: служба нарушила договор со systemd. Обычно Type=notify без уведомления или Type=dbus без имени на шине.
Источники
-
systemctl(1)
Задания, режимы их постановки и отмена. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено двумя командами управления подряд.