status=207/SIGNAL_MASK в systemd
Код 207/SIGNAL_MASK означает неудачу при установке маски сигналов перед запуском программы. Это служебный шаг, который почти никогда не зависит от unit-файла, поэтому код встречается редко и обычно указывает на неполадки окружения: исчерпанные ресурсы, повреждённое состояние процесса-родителя, экзотический контейнер.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Исчерпаны ресурсы системы
При нехватке памяти или упоре в предел числа процессов служебные системные вызовы начинают отказывать, включая работу с маской сигналов.
-
Служба запускается в необычном окружении
В нестандартных контейнерах и при перехвате системных вызовов сторонними средствами (seccomp-политика извне, отладчики, песочницы) установка маски сигналов может быть запрещена.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Показывает шаг SIGNAL_MASK и причину от ядра.
journalctl -xeu myapp.service --no-pager -n 20Сообщения ядра за загрузку: при исчерпании ресурсов причина обычно видна именно там.
journalctl -k -b --no-pager | tail -50Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- При нехватке памяти или упоре в предел числа процессов служебные системные вызовы начинают отказывать, включая работу с маской сигналов.
- Как проверить
-
Посмотрите память, число задач и записи ядра.
free -h systemctl show myapp.service -p TasksMax -p TasksCurrent journalctl -k -b --no-pager | tail -30
- Как исправить
-
Разберитесь с нехваткой ресурсов: этот код — следствие, а не причина. После освобождения памяти или повышения
TasksMax=шаг проходит.
- Почему происходит
- В нестандартных контейнерах и при перехвате системных вызовов сторонними средствами (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 (Ubuntu 24.04)
Наблюдалось на машине с исчерпанной памятью; отдельно unit-файлом не вызывается.