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

signal=BUS (status=7/BUS) в systemd

BUS похож на SEGV, но причина у него более узкая: программа обратилась к памяти, которая физически не может быть предоставлена. Классический случай — файл, отображённый в память, был усечён или закончилось место на разделе, где он лежит.

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

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

  1. Файл, отображённый в память, изменился или усечён

    Если программа отобразила файл и кто-то сократил его снаружи, обращение к отсутствующей области даёт BUS. Так ломаются базы и кеши при ручном вмешательстве в их файлы.

  2. Закончилось место на разделе с отображённым файлом

    Запись в отображённую область требует выделения блоков на диске. Если места нет, ядро не может её выполнить и посылает BUS.

  3. Ошибка выравнивания или проблема оборудования

    На некоторых архитектурах обращение по невыровненному адресу даёт BUS. Реже причина в самой памяти или диске.

Диагностика

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

Заполненный раздел — самая частая объяснимая причина BUS у служб с базами.

df -h

Трассировка: показывает, на какой операции с памятью произошёл сбой.

coredumpctl info myapp | head -40

Записи ядра об ошибках ввода-вывода и оборудования.

journalctl -k -b --no-pager | grep -iE "I/O error|mce"

Решение

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

1. Файл, отображённый в память, изменился или усечён
Почему происходит
Если программа отобразила файл и кто-то сократил его снаружи, обращение к отсутствующей области даёт BUS. Так ломаются базы и кеши при ручном вмешательстве в их файлы.
Как проверить
Посмотрите, какие файлы отображала служба и не менялись ли они.
sudo ls -l /var/lib/myapp/
journalctl -u myapp.service -n 40 --no-pager
Как исправить
Не изменяйте файлы работающей службы снаружи. Восстановите файл из резервной копии и перезапустите службу.
2. Закончилось место на разделе с отображённым файлом
Почему происходит
Запись в отображённую область требует выделения блоков на диске. Если места нет, ядро не может её выполнить и посылает BUS.
Как проверить
Посмотрите свободное место и записи ядра.
df -h
journalctl -k -b --no-pager | tail -20
Как исправить
Освободите место и перезапустите службу. Для разделов с базами полезен мониторинг заполнения: BUS — довольно позднее оповещение о проблеме с местом.
3. Ошибка выравнивания или проблема оборудования
Почему происходит
На некоторых архитектурах обращение по невыровненному адресу даёт BUS. Реже причина в самой памяти или диске.
Как проверить
Посмотрите записи ядра об ошибках оборудования и трассировку дампа.
journalctl -k -b --no-pager | grep -iE "mce|edac|I/O error"
coredumpctl info myapp | head -30
Как исправить
При следах ошибок оборудования планируйте проверку памяти и диска. При невыровненном доступе нужна правка программы.

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

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

× db.service - Database
     Active: failed (Result: core-dump) since Mon 2026-09-15 15:22:19 MSK; 12s ago
   Main PID: 15100 (code=dumped, signal=BUS)

kernel: EXT4-fs (vda2): warning: no space left on device
systemd[1]: db.service: Main process exited, code=dumped, signal=BUS
systemd[1]: db.service: Failed with result 'core-dump'.

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

  • signal=SEGV (status=11/SEGV) в systemd Процесс службы завершён сигналом SEGV: обращение к недопустимой памяти. Как собрать дамп и что смотреть.
  • No space left on device в журнале службы Нет места на устройстве: разбор по свободным блокам, по inode, по журналу systemd и по удалённым, но открытым файлам.
  • Failed with result 'core-dump' Состояние core-dump: процесс службы аварийно завершился и сохранил дамп памяти. Как открыть дамп и прочитать трассировку.
  • signal=ABRT (status=6/ABRT) в systemd Процесс службы завершён сигналом ABRT: программа сама прервала работу после внутренней проверки. Где искать причину.
  • signal=FPE (status=8/FPE) в systemd Процесс службы завершён сигналом FPE: арифметическая ошибка, чаще всего деление на ноль в целочисленной арифметике.
  • signal=ILL (status=4/ILL) в systemd Процесс службы завершён сигналом ILL: недопустимая инструкция процессора. Обычно сборка не под этот процессор.
  • Disk quota exceeded для службы Место на разделе есть, а запись отклоняется: исчерпана дисковая квота пользователя или группы.
  • Docker: no space left on device при запуске контейнеров Раздел с /var/lib/docker заполнен образами и слоями. Как посчитать занятое и что можно удалить безопасно.

Где встречается чаще всего

Источники

  • coredumpctl(1)
    Дампы и трассировки аварийных завершений.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено на заполненном разделе с отображённым в память файлом.
    собственная проверка, systemd 255
    сверено 15 сентября 2026