Быстрое восстановление при «трешинге» в Linux с помощью Magic SysRq
Что такое «трешинг» и почему это важно
Трешинг — состояние, когда у системы недостаточно оперативной памяти и она тратит почти всё время на обмен страницами между RAM и swap. Внешне это выглядит как сильное замедление, зависания браузера и невозможность удобно работать. При трешинге обычные приложения «закапываются», а ответ от системы приходит с большими задержками.
Коротко: трешинг происходит, когда суммарный набор активных страниц превышает возможности памяти и swap, а ядро постоянно перегружено paging-операциями.
Почему Magic SysRq помогает
Magic SysRq — это набор горячих клавиш/команд, встроенных в ядро Linux, которые дают прямой, низкоуровневый интерфейс к некоторым функциям ядра, даже если пользовательский интерфейс завис. Комбинация R,E,I,S,U,B (часто запоминают как REISUB) выполняет безопасную последовательность действий для восстановления контроля и минимизации потерь данных.
Краткий смысл команд REISUB:
- R — переключить клавиатуру в Raw-режим (возвращает управление X/TTY). Это помогает остановить X-сервер, если он «съел» клавиатурный ввод.
- E — послать SIGTERM всем процессам, давая им шанс корректно завершиться.
- I — послать SIGKILL всем процессам, убивая оставшиеся.
- S — синхронизировать (flush) все файловые системы на диск.
- U — перемонтировать все файловые системы в режим “только чтение”.
- B — немедленно перезагрузить систему.
Важно: REISUB минимизирует риск повреждения файловых систем по сравнению с принудительной перезагрузкой питания.
Как правильно выполнить комбинацию на физической клавиатуре
- Нажмите и удерживайте Ctrl + Alt + Fn (где Fn — это обычно клавиша над Ctrl/Alt, чаще обозначается как PrtScr/SysRq на некоторых клавиатурах).
- Другой рукой нажмите клавишу SysRq (на клавиатриах без явной метки используйте PrtScn / Print Screen).
- Отпустите Ctrl + Alt + Fn, продолжая держать SysRq.
- Последовательно нажмите клавиши: R, E, I, S, U, B (с небольшими паузами, 1–2 секунды, между нажатиями).
- Отпустите все клавиши и дождитесь перезагрузки/возврата контроля.
Если клавиатура комбинирует SysRq и PrtSc на одной клавише, может потребоваться нажимать её вместе с Fn, если у вас ноутбук.
Альтернативный способ: trigger из пользовательской сессии (root)
Если у вас есть доступ к root через SSH или локальную консоль и графический интерфейс реагирует частично, можно отправить команды напрямую в /proc:
# Включить SysRq временно
sudo sh -c 'echo 1 > /proc/sys/kernel/sysrq'
# Отправить действия (пример: синхронизировать и перезагрузить)
sudo sh -c 'echo s > /proc/sysrq-trigger'
sudo sh -c 'echo u > /proc/sysrq-trigger'
sudo sh -c 'echo b > /proc/sysrq-trigger'Эти команды требуют прав root и работают даже при зависшем X, если ядро отвечает.
Важно: не используйте ‘b’ без предварительной синхронизации и remount в read-only, если хотите минимизировать риск повреждения данных.
Проверка и включение Magic SysRq на постоянной основе
Чтобы сделать sysrq постоянно включённым, добавьте настройку в /etc/sysctl.conf или в соответствующий drop-in для systemd:
# временно
sudo sysctl -w kernel.sysrq=1
# постоянно (в /etc/sysctl.conf)
kernel.sysrq = 1
sudo sysctl -pЕсли ваша система была собрана без поддержки CONFIG_MAGIC_SYSRQ в ядре, эта опция недоступна — но это редкость для дистрибутивов общего назначения.
Когда SysRq не помогает — типичные причины
- Железное зависание: если контроллер ввода/USB завис, клавиатура не передаёт нажатия.
- Полный дедлок ядра (kernel panic) — SysRq может сработать частично, но не гарантированно.
- SysRq отключён в конфигурации ядра или через /proc/sys/kernel/sysrq (значение 0).
- Если у вас удалённый доступ без передачи специальных последовательностей (например, некоторые KVM-решения не пересылают SysRq корректно).
Если SysRq не срабатывает, остаются варианты: аккуратно дождаться реакции, выполнить аппаратную перезагрузку или отключение питания как крайняя мера.
Предотвращение трешинга — лучшие практики
- Следите за использованием памяти: top/htop, free, vmstat помогают увидеть растущий swap и page-in/page-out.
- Настройте разумный размер swap и рассмотрите zram/zswap для современных ноутбуков с малой RAM.
- Ограничивайте потребление браузера: отключите тяжёлые вкладки, расширения, используйте облегчённые браузеры.
- Добавьте физическую память, если рабочие нагрузки регулярно превышают возможности вашего устройства.
- Для серверов используйте мониторинг и оповещения (Prometheus/Grafana, Zabbix), чтобы реагировать до момента трешинга.
Быстрый план действий (SOP) для пользователя на ноутбуке
- Если интерфейс частично откликается, попробуйте закрыть браузер через диспетчер задач (Ctrl+Alt+F2, войти в терминал, pkill -9 firefox).
- Если нет реакции — используйте REISUB (описано выше).
- Если REISUB недоступен, попытайтесь выполнить команды через SSH с другого хоста (echo > /proc/sysrq-trigger).
- Если ничего не помогает — аппаратная перезагрузка (долго удерживать кнопку питания) как крайняя мера.
- После восстановления: проверьте журналы (dmesg, /var/log/syslog, journalctl) и выполните fsck при необходимости.
Чек‑лист для администратора перед инцидентом
- Включить kernel.sysrq=1 или документировать значение по умолчанию.
- Настроить доступ к консоли/серийному порту / KVM для экстренного доступа.
- Обучить пользователей процедуре REISUB и правилам безопасной перезагрузки.
- Настроить мониторинг использования памяти и оповещения.
Критерии приёмки (после использования REISUB)
- Система успешно перезагрузилась без ошибок монтирования.
- Файловые системы прошли проверку при очередном монтировании (fsck не сообщил о повреждениях).
- Журналы сообщают о причинах трешинга и применены корректирующие меры (например, добавление swap, увеличение памяти, ограничение процессов).
Быстрые команды для обнаружения виновника трешинга
# список процессов по использованию памяти
ps aux --sort=-%mem | head -n 20
# интерактивно — htop (если доступно)
htop
# статистика свопа и страниц
vmstat 1 5Частые альтернативы и когда их применять
- Перезапуск конкретного процесса (kill -15, затем kill -9) — когда интерфейс реагирует.
- Увеличение swap или включение zram — предотвращает трешинг на ограниченной памяти.
- Вертикальное масштабирование (добавление RAM) — долгосрочное решение.
- Использование более лёгкого окружения рабочего стола или браузера — уменьшение потребления ресурсов.
Короткий глоссарий
- Трешинг — интенсивный обмен страницами, приводящий к сильному замедлению.
- SysRq — «магическая» клавиша ядра Linux для отправки низкоуровневых команд.
- REISUB — мнемоника последовательности команд для безопасной перезагрузки.
FAQ
Работает ли REISUB через SSH?
Да — если на удалённой машине ядро отвечает и у вас есть root-доступ, вы можете писать в /proc/sysrq-trigger.
Опасно ли использовать REISUB на сервере с базой данных?
REISUB пытается корректно завершить процессы (SIGTERM) и синхронизировать данные, но возможны несохранённые транзакции. Перед применением на prod-системах лучше остановить СУБД корректно, если есть такая возможность.
Как проверить, включён ли SysRq?
Посмотрите текущее значение:
cat /proc/sys/kernel/sysrqЗначение 0 означает отключено, 1 — включено (в некоторых системах применяется битмаска).
Итог
Magic SysRq — простой и мощный инструмент в арсенале пользователя и администратора Linux. Он даёт последовательность безопасных действий, которые часто позволяют снизить риск потери данных и аккуратно перезагрузить систему при трешинге. Настройте sysrq заранее, задокументируйте процедуру и используйте мониторинг, чтобы не допускать повторных инцидентов.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone