Комбинации клавиш SysRq в Linux

Посмотрите на вашу клавиатуру. Взгляните на верхний правый угол рядом с конопками PageUp и Home есть кнопка с названием SysRq у нее также есть еще оно название - PrintScreen. Но что это за кнопка и зачем она нужна? SysRq - это сокращение от System Request или по нашему - системный запрос. Однако это не пролило свет на назначение этой клавиши. Для того чтобы все понять давайте посмотрим на историю развития вычислительной техники.

Как появилась клавиша SysRq

Это было не так давно, тогда когда компьютеры использовались не так широко, а единственным цветом экрана был зеленый или апельсиновый. Шел 1984 год, состоялся релиз IBM PC/AT. Клавиатура XT состояла из 83 клавиш, но в новой AT было 84. Была добавлена одна кнопка и это SysRq.

Нажатие на клавишу SysRq вызывало выполнение специального BIOS прерывания. Изначально она была предназначена для запуска нескольких ОС на одном ПК.

Вернемся в наше время. Операционные системы уже научились делать множество вещей самостоятельно, начали переопределять стандартные таблицы прерываний, и клавиша SysRq перестала использоваться. Однако проведывание реализированное десятилетия назад все еще поддерживается BIOS большинства компьютеров.

Добавим немного магии SysRq

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

Ядро Linux способно прослушивать и обрабатывать несколько команд, которые вызываются через клавишу SysRq. Это прямой путь обращения к ядру, поэтому неправильное его использование может быть опасным.

Если система полностью зависла, но ядро все еще работает то эти низкоуровневые инструменты могут быть очень полезными. 

Что для этого нужно?

Функции магических сочетаний клавиш поддерживается во всех ядрах новее 2.6.12. Но ядро должно быть скомпилировано с поддержкой SysRq, обычно эта опция включена по умолчанию.

Проверить состояние SysRq можно с помощью команды:

cat /proc/sys/kernel/sysrq

Если отключена, то нужно включить. Для временного включения, будет отключена после перезагрузки, выполните:

echo “1” > /proc/sys/kernel/sysrq

или:

sudo sysctl -w kernel.sysrq=“1”

А для постоянного включения нужно добавить, следующую строчку в /etc/sysctl.conf:

$ nano /etc/sysctl.conf
kernel.sysrq =1”

Как это работает?

Для активации магического сочетания клавиш используется три клавиши Alt + SysRq + буква команды. Если вы в графической системе переключитесь в режим терминала и выполните свою первую SysRq команду - Alt+SysRq+h. После этого будет выведена справка по доступным командам.

Команды SysRq

  • Alt + SysRq + B - Немедленно перезагружает систему. Без синхронизации и размонтирования дисков.
  • Alt+SysRq+C - Крашит систему
  • Alt+SysRq+E - посылает сигнал SIGTERM всем процессам кроме Init
  • Alt+SysRq+I - посылает сигнал SIGKILL всем процессам кроме Init
  • Alt+SysRq+O - выключает машину, но работает не на всех машинах
  • Alt+SysRq+R - возвращает управление клавиатурой в случае сбора X сервера
  • Alt+SysRq+U - перемонтирует файловые системы в Read-Only
  • Alt+SysRq+S - записывает все кешированные данные на диск.
  • Alt+SysRq+K - убивает все процессы в текущей консоли, ее можно использовать вместо Ctr+Alt+Backspace
  • Alt+SysRq+N - сброс приоритета всех высоко приоритетных процессов
  • Alt+SysRq+F - запускает механизм oom_kill, который уничтожит процесс занимающий очень много памяти.
  • Alt+SysRq+T - вывести всю информацию о запущенных процессах на текущую консоль
  • Alt+SysRq+L - посылает сигнал SIGKILL всем процессам включая Init.
  • Alt+SysRq+P - ядро выдаст дамп текущего состояния регистров процессора в консоль

Как это использовать?

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

Если система полностью зависла и вообще не отвечает, невозможно даже перейти в терминал с помощью сочетания клавиш Ctrl+Alt+F1, но ядро работает, можно попытаться перезагрузить компьютер с помощью SysRq. Но не спешите выполнять команду B. Сначала нажмите Alt+SysRq+R чтобы вернуть управление клавиатурой в случае сбоя Х сервера. Затем последовательно с задержкой в секунду Alt+SysRq+E и Alt+SysRq+I. Затем U и S для синхронизации файловых систем и дисков. И аж тогда B. Получиться вот такая комбинация R E I U S B.

Команду Alt+SysRq+K которая уничтожает все процессы в текущей консоли можно использовать чтобы убедиться что приглашение ввода логина  и пароля никакой не троян.

Если компьютер завис из-за того что один из процессов занял всю оперативную память используйте Alt+SysRq+F для запуска процесса очистки памяти.

Автор: Юрий Герук

Лицензия: CC BY-SA 4.0

Похожие материалы:
Помогла ли вам статья?
Да Нет
Статья оказалась полезной для 0 человек
avatar