Что делать, если Linux зависает намертво: от REISUB до earlyoom
Если Linux зависает, сначала попробуйте Ctrl+Alt+F3: открылась консоль, значит ядро живо и виновный процесс можно убить. Если не помогает, зажмите Alt+SysRq и по очереди нажмите R, E, I, S, U, B, а при нехватке памяти хватит Alt+SysRq+F. Чтобы это не повторялось, поставьте earlyoom или проверьте systemd-oomd и посмотрите журнал прошлой загрузки.

Содержание
Зависла графика, память или ядро: как отличить за минуту
Слово "зависает" описывает очень разные поломки, и лечатся они по-разному. Прежде чем жать кнопку питания, проверьте несколько признаков.
- Курсор двигается, окна не реагируют. Повисла оболочка рабочего стола или одно приложение. Ядро живо, все поправимо без перезагрузки.
- Все дико тормозит, индикатор диска горит постоянно, мышь дергается раз в несколько секунд. Кончилась оперативная память, система ушла в бесконечный обмен со swap. Это самый частый случай на ПК с 8 ГБ и браузером на 40 вкладок.
- Картинка замерла намертво, но Caps Lock переключает светодиод и отвечает ping с другого компьютера. Скорее всего упал видеодрайвер, ядро работает.
- Светодиод Caps Lock мигает сам, клавиатура мертва. Kernel panic. Тут спасет только перезагрузка, а причину искать в журнале.
Полезно держать второе устройство: если по SSH с телефона или ноутбука удается зайти на зависший компьютер, у вас полноценный доступ к процессам и журналу.
Текстовая консоль: снять зависший процесс без перезагрузки
Нажмите Ctrl+Alt+F3 (подойдут F2-F6). Появится черный экран с приглашением входа, введите логин и пароль. Если консоль открылась, ядро в порядке, и можно разбираться.
# кто съел память и процессор
top -o %MEM
# или, если установлен
htop
# завершить процесс по PID, затем принудительно
kill 12345
kill -9 12345
# убить все процессы браузера
pkill -f firefox
Если повис весь рабочий стол, перезапустите экранный менеджер. Все открытые программы в графическом сеансе закроются, но несохраненные данные других пользователей и фоновые службы останутся.
sudo systemctl restart gdm # GNOME: Ubuntu, Fedora Workstation
sudo systemctl restart sddm # KDE Plasma
sudo systemctl restart lightdm # Linux Mint, Xubuntu
# в KDE Plasma 6 иногда достаточно перезапустить панель
systemctl --user restart plasma-plasmashell
Вернуться в графику можно сочетанием Ctrl+Alt+F1 или Ctrl+Alt+F2, в зависимости от дистрибутива. Как читать top и htop, сортировать и снимать процессы, подробно описано в статье про htop и управление процессами.
REISUB: безопасная перезагрузка, когда ничего не отвечает
Magic SysRq - сочетания клавиш, которые обрабатывает само ядро, минуя графику и зависшие программы. Последовательность REISUB перезагружает компьютер аккуратнее, чем кнопка питания: файловые системы успевают сбросить буферы на диск.
Зажмите Alt и SysRq (на большинстве клавиатур это Print Screen), не отпуская их, по очереди нажимайте R, E, I, S, U, B с паузой в 2-3 секунды. На ноутбуках часто нужен еще Fn: Fn+Alt+PrtSc.
- R - забрать клавиатуру у графического сервера.
- E - послать всем процессам SIGTERM, просьбу завершиться.
- I - послать SIGKILL тем, кто не послушался.
- S - записать на диск все несохраненные буферы.
- U - перемонтировать файловые системы только на чтение.
- B - немедленно перезагрузить.
Порядок запоминается фразой "Reboot Even If System Utterly Broken" или словом BUSIER задом наперед. Вместо B можно нажать O, тогда компьютер выключится. Если после R и E ничего не происходит, это не значит, что команды не дошли: на графическом экране ядро ничего не показывает.
Отдельная полезная клавиша - F. Alt+SysRq+F вызывает OOM killer ядра вручную: он убивает самый прожорливый процесс. Если система встала из-за нехватки памяти, этого часто хватает, и перезагрузка не нужна.
Почему REISUB не работает и как включить Magic SysRq
Дистрибутивы по умолчанию разрешают только часть функций SysRq, потому что физический доступ к клавиатуре иначе позволял бы любому убивать процессы. Текущее значение:
cat /proc/sys/kernel/sysrq
Число - сумма битов из таблицы. В Ubuntu и Linux Mint по умолчанию стоит 176, то есть работают только S, U и B. В Fedora и Arch через systemd выставлено 16, остается одна синхронизация S. Поэтому REISUB "из коробки" обычно срабатывает лишь наполовину.
| Значение | Что разрешает | Клавиши |
|---|---|---|
| 0 | SysRq полностью выключен | нет |
| 1 | Все функции | все |
| 2 | Уровень вывода сообщений в консоль | 0-9 |
| 4 | Управление клавиатурой | R, K |
| 8 | Отладочные дампы процессов и памяти | T, M, W, P |
| 16 | Синхронизация дисков | S |
| 32 | Перемонтирование только на чтение | U |
| 64 | Сигналы процессам и OOM killer | E, I, F |
| 128 | Перезагрузка и выключение | B, O |
| 256 | Понижение приоритета realtime-задач | N |
Для домашнего ПК разумно значение 244 (4+16+32+64+128): полный REISUB и клавиша F без отладочных дампов. Задать навсегда:
echo 'kernel.sysrq = 244' | sudo tee /etc/sysctl.d/90-sysrq.conf
sudo sysctl --system
cat /proc/sys/kernel/sysrq
Ограничение касается только клавиатуры. От root функции доступны всегда, это удобно по SSH: echo f | sudo tee /proc/sysrq-trigger вызывает OOM killer, echo b | sudo tee /proc/sysrq-trigger перезагружает. Полный список клавиш есть в документации ядра по SysRq.
Нехватка памяти: почему OOM killer опаздывает и что поставить
Ядро запускает свой OOM killer, когда памяти не осталось совсем. До этого момента оно выбрасывает из кэша код программ и тут же читает его с диска снова. Компьютер формально жив, но каждое движение мыши занимает секунды, и такое состояние может длиться десятки минут. Решение - демон, который убивает процесс заранее, пока система еще отзывчива.
systemd-oomd
В Ubuntu с 22.04 и в Fedora с 34 уже работает systemd-oomd. Он следит за давлением памяти (PSI) и завершает целый cgroup, например вкладки браузера или зависшую сборку. Проверить:
systemctl status systemd-oomd
oomctl
journalctl -u systemd-oomd -b
earlyoom
earlyoom проще и предсказуемее: смотрит на процент свободной памяти и swap и при пороге отправляет SIGTERM самому крупному процессу. Хорош для Debian, Arch, Linux Mint и слабых машин.
sudo apt install earlyoom # Debian, Ubuntu, Mint
sudo dnf install earlyoom # Fedora
sudo pacman -S earlyoom # Arch
sudo systemctl enable --now earlyoom
Настройки в Debian, Ubuntu и Fedora лежат в /etc/default/earlyoom. Пример: срабатывать при 5% свободной памяти и 10% swap, в первую очередь жертвовать браузерами и не трогать сеанс рабочего стола:
EARLYOOM_ARGS="-m 5 -s 10 -r 3600 --prefer '(^|/)(firefox|chrome|electron)$' --avoid '(^|/)(gnome-shell|plasmashell|kwin_wayland|Xorg|sshd)$'"
Порог срабатывает, только когда ниже минимума и память, и swap. После правки файла выполните sudo systemctl restart earlyoom.
Два OOM-демона одновременно не нужны. Ставите earlyoom в Ubuntu или Fedora, отключите systemd-oomd: sudo systemctl disable --now systemd-oomd. Вторая половина решения - сжатый swap в памяти, он заметно отодвигает момент нехватки на ноутбуках с 8 ГБ. Как его включить, рассказано в статье про ZRAM и swap.
Если зависания повторяются при работе с браузером, IDE или сборкой проектов, начните с простого: поставьте earlyoom или проверьте, что работает systemd-oomd, и включите zram. На практике это устраняет большинство "намертво" на домашних машинах, а REISUB остается на крайний случай.
Поиск причины в журнале после перезагрузки
Все, что ядро успело сказать перед зависанием, остается в журнале systemd, если он хранится на диске. В Fedora, Arch и Ubuntu хранение постоянное по умолчанию. Проверить и включить, если каталога нет:
ls /var/log/journal
sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald
Смотрим предыдущую загрузку, ту, что закончилась зависанием:
journalctl --list-boots
journalctl -b -1 -p err
journalctl -k -b -1 -e
journalctl -k -b -1 | grep -iE 'oom|killed process|hung_task|blocked for more|xid|gpu|ring .* timeout|hardware error|mce'
Что означают типичные находки:
- Out of memory: Killed process - нехватка памяти, см. раздел выше.
- task ... blocked for more than 120 seconds - процесс ждет диск. Проверьте SMART и кабель, особенно у HDD и внешних USB-дисков.
- NVRM: Xid - ошибка драйвера NVIDIA. Обновите или откатите драйвер.
- amdgpu: ring gfx timeout - зависание видеоядра AMD, часто лечится обновлением ядра и пакета linux-firmware.
- mce: [Hardware Error] - процессор или память сообщают об аппаратной ошибке.
Если журнал обрывается без единой ошибки, это тоже информация: скорее всего виновато железо или питание, ядро просто не успело ничего записать. Если журнал за много месяцев раздулся до гигабайтов, ограничьте его размер, как показано в статье про journald.
Когда виновато железо или свежее ядро
Зависания без следов в журнале чаще всего приходят от оперативной памяти, перегрева или блока питания.
- Память. Проверьте ее memtest86+. В Ubuntu и Debian он ставится пакетом
memtest86+и появляется отдельным пунктом в меню GRUB, работает и в UEFI. Оставьте тест на несколько проходов, одна ошибка уже повод менять модуль или отключить разгон XMP/EXPO. - Температура. Пакет
lm-sensors, командаsensors. Если процессор под нагрузкой упирается в 95-100 градусов, пора менять термопасту и чистить радиатор. - Диск. Подвисания на секунды при обращении к файлам часто дает умирающий HDD или SSD. Как проверить накопитель, разобрано в статье про проверку диска.
- Ядро. Начались зависания сразу после обновления? В меню GRUB откройте дополнительные параметры и загрузите предыдущее ядро. Если с ним все стабильно, оставьте его основным до следующего обновления.
Для серверов и машин без монитора полезно, чтобы после kernel panic компьютер перезагружался сам, а не висел до утра:
echo 'kernel.panic = 10' | sudo tee /etc/sysctl.d/91-panic.conf
sudo sysctl --system
Через 10 секунд после паники система уйдет в перезагрузку.
Частые вопросы
Почему Ubuntu зависает намертво при нехватке памяти?
Ядро до последнего вытесняет код программ из памяти и читает его с диска снова, и OOM killer срабатывает слишком поздно. Поставьте earlyoom или проверьте systemd-oomd, включите zram, а в момент зависания нажмите Alt+SysRq+F.
REISUB не работает, что делать?
Проверьте cat /proc/sys/kernel/sysrq. В Ubuntu по умолчанию 176, в Fedora и Arch 16, поэтому часть клавиш выключена. Задайте kernel.sysrq = 244 в /etc/sysctl.d/90-sysrq.conf и выполните sudo sysctl --system. На ноутбуке может понадобиться Fn.
Опасно ли включать Magic SysRq?
Риск только в физическом доступе: человек у клавиатуры сможет перезагрузить компьютер или убить процессы. Для домашнего ПК это приемлемо. На общих компьютерах и в публичных местах оставьте значение по умолчанию.
Где посмотреть, почему Linux завис?
После перезагрузки выполните journalctl -b -1 -p err и journalctl -k -b -1. Ищите строки Out of memory, blocked for more than 120 seconds, NVRM: Xid и Hardware Error.
Нужен ли earlyoom, если есть systemd-oomd?
Нет, достаточно одного. В Ubuntu и Fedora systemd-oomd уже работает. earlyoom удобнее на Debian, Arch и Linux Mint или если вы хотите задавать порог в процентах свободной памяти.
Документация и источники
- Linux Magic System Request Key Hacks, kernel.org, 2026
- systemd-oomd.service, freedesktop.org, 2026
- earlyoom, rfjakob/earlyoom, GitHub, 2026
Читайте также
- htop и процессы Linux: как найти нагрузку и правильно убить процесс
- ZRAM и swap в Linux: как настроить память, чтобы система не тормозила
- Как создать swap-файл в Linux, увеличить или удалить его
- Журнал systemd занимает диск: как очистить и ограничить journald
- Как обновить ядро Linux в Ubuntu, Debian, Fedora и Arch и откатиться назад
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.