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

status=207/SIGNAL_MASK в systemd

Код 207/SIGNAL_MASK означает неудачу при установке маски сигналов перед запуском программы. Это служебный шаг, который почти никогда не зависит от unit-файла, поэтому код встречается редко и обычно указывает на неполадки окружения: исчерпанные ресурсы, повреждённое состояние процесса-родителя, экзотический контейнер.

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

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

  1. Исчерпаны ресурсы системы

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

  2. Служба запускается в необычном окружении

    В нестандартных контейнерах и при перехвате системных вызовов сторонними средствами (seccomp-политика извне, отладчики, песочницы) установка маски сигналов может быть запрещена.

Диагностика

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

Показывает шаг SIGNAL_MASK и причину от ядра.

journalctl -xeu myapp.service --no-pager -n 20

Сообщения ядра за загрузку: при исчерпании ресурсов причина обычно видна именно там.

journalctl -k -b --no-pager | tail -50

Решение

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

1. Исчерпаны ресурсы системы
Почему происходит
При нехватке памяти или упоре в предел числа процессов служебные системные вызовы начинают отказывать, включая работу с маской сигналов.
Как проверить
Посмотрите память, число задач и записи ядра.
free -h
systemctl show myapp.service -p TasksMax -p TasksCurrent
journalctl -k -b --no-pager | tail -30
Как исправить
Разберитесь с нехваткой ресурсов: этот код — следствие, а не причина. После освобождения памяти или повышения TasksMax= шаг проходит.
2. Служба запускается в необычном окружении
Почему происходит
В нестандартных контейнерах и при перехвате системных вызовов сторонними средствами (seccomp-политика извне, отладчики, песочницы) установка маски сигналов может быть запрещена.
Как проверить
Проверьте, воспроизводится ли отказ вне контейнера, и посмотрите ограничения окружения.
systemd-detect-virt
systemctl show myapp.service -p SystemCallFilter
Как исправить
Уберите внешнюю фильтрацию системных вызовов или запускайте службу в обычном окружении.

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

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

× myapp.service - My application
     Active: failed (Result: exit-code) since Mon 2026-09-14 19:20:40 MSK; 1s ago
    Process: 15330 ExecStart=/usr/local/bin/myapp (code=exited, status=207/SIGNAL_MASK)

systemd[15330]: myapp.service: Failed at step SIGNAL_MASK spawning /usr/local/bin/myapp: Cannot allocate memory

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

  • status=204/MEMORY в systemd Код 204/MEMORY: systemd не смог выделить память при подготовке запуска службы. Что проверять на машине и в unit-файле.
  • status=228/SECCOMP в systemd Код 228/SECCOMP: не удалось применить фильтр системных вызовов из SystemCallFilter=. Причины: неизвестное имя вызова, отсутствие поддержки в ядре.
  • signal=FPE (status=8/FPE) в systemd Процесс службы завершён сигналом FPE: арифметическая ошибка, чаще всего деление на ноль в целочисленной арифметике.
  • signal=XCPU и signal=XFSZ в systemd Процесс службы убит из-за превышения предела процессорного времени (XCPU) или размера файла (XFSZ) из LimitCPU и LimitFSIZE.
  • status=220/SETSID в systemd Код 220/SETSID: systemd не смог создать новый сеанс процесса. Редкий код, чаще всего связан с окружением запуска.
  • Cannot allocate memory в журнале службы Не удалось выделить память: предел службы, память машины, настройка overcommit, исчерпанные области отображения.
  • Disk quota exceeded для службы Место на разделе есть, а запись отклоняется: исчерпана дисковая квота пользователя или группы.
  • Elasticsearch: max virtual memory areas vm.max_map_count is too low Elasticsearch отказывается стартовать из-за заниженного vm.max_map_count. Как поднять значение и закрепить его.

Источники

  • systemd.exec(5)
    207 EXIT_SIGNAL_MASK: не удалось установить маску сигналов процесса.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Наблюдалось на машине с исчерпанной памятью; отдельно unit-файлом не вызывается.
    собственная проверка, systemd 255
    сверено 15 сентября 2026