Журнал LinuxFormat - перейти на главную

LXF107:DrBarun2

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Магия SysRq

Как быстро привлечь внимание ядра, или почему Так Невообразимо Нудно Растить Слонов.

В следующий раз, когда окажетесь неподалеку от Linux-компьютера своего друга, проведите следующий эксперимент: нажмите Alt и SysRq и затем B. Потом с удивлением отойдите назад и скажите: «Странно – твой компьютер, кажется, перезагрузился». На самом деле, вы только что наблюдали чудо Волшебной Клавиши SysRq.

Название Magic SysRq всегда будило во мне фантазию, что это предмет поиска для Бильбо Бэггинса [Bilbo Baggins – хоббит, персонаж произведений Джона Р. Р. Толкиена, – прим. пер.] в какой-нибудь пещере. На самом же деле это комбинации горячих клавиш для быстрого привлечения внимания ядра.

В таблице показаны некоторые команды, доступные с помощью Magic SysRq. Помните: чтобы это работало, нужно одновременно нажать Alt и SysRq. Если хотите поэкспериментировать, предупреждаю, что реакция ядра на эти клавиши очень резкая. Если у вас есть несохраненные файлы, не выполняйте этих команд! Также, возможно, придется поэкспериментировать, чтобы подобрать правильную комбинацию. Например, у меня клавиатура Microsoft с клавишей, помеченной как F Lock. Чтобы клавиша SysRq заработала, ее нужно отключить. На ноутбуке должна быть клавиша Fn – чтобы заработала клавиша SysRq, ее, возможно, придется нажать, так что в итоге получается комбинация Fn+Alt+SysRq+B.

Да, но зачем?

Вы можете спросить, зачем все это нужно. Согласен: это, наверное, не то, что требуется каждый день. Я как-то использовал Magic SysRq для имитации ошибки в системе (для проверки сбоя отказоустойчивого кластера). Не сомневаюсь, что гуру ядра смогут выудить полезную информацию из списка задач и статистики использования памяти, которые доступны по клавишам T и M.

Если система реально подвисла, можно перезагрузить ее более элегантно, чем просто отключив питание. Рекомендованная последовательность клавиш R > E > I > S > U > B (переключение клавиатуры из raw-режима, отправка сигнала SIGTERM всем процессам в надежде, что они завершатся сами, отправка сигнала SIGKILL тем, кто этого не сделал, сброс всех смонтированных файловых систем на диск, перемонтирование их в режиме «только для чтения» и перезагрузка). Чтобы запомнить эту последовательность, пригодится акроним “raising elephants is so utterly boring” (Растить слонов ну просто невообразимо нудно); можно запомнить это как ‘busier’ наоборот. Для лучшего результата делайте паузу в несколько секунд между нажатиями клавиш.

Если вам не удается заставить Magic SysRq работать, нужно кое-что проверить. Во-первых, эта возможность должна быть включена в ядре. Для этого просмотрите копию файла конфигурации ядра, которая (будем надеяться) лежит в каталоге /boot. Файл, скорее всего, называется как-то вроде config-2.6.18-Нечто, и строка, которую мы ищем, определяет параметр CONFIG_MAGIC_SYSRQ. Если он установлен в ‘y’, все хорошо, если нет – потребуется изменить конфигурацию ядра и перекомпилировать его.

Параметры ядра

Во-вторых, параметр времени выполнения ядра /proc/sys/kernel/sysrq нужно установить в 1. Эта установка времени выполнения, а не времени сборки, и ее можно установить динамически с помощью команды:

echo 1 > /proc/sys/kernel/sysrq

или

sysctl -w kernel.sysrq=1

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

kernel.sysrq=1

в файл /etc/sysctl.conf.

Я только что проверил все системы, которые у меня под рукой: в Ubuntu 7.04, 7.10 и 8.04 функция Magic SysRq включена по умолчанию. В Fedora 7 она настроена в ядре, но отключена в /proc/sys (лично мне кажется, что это более безопасный вариант).

Держим Alt + SysRq + клавишу…

Клавиша Действие
0–9 Установить уровень журналирования, что влияет, например, на вывод, генерируемый командами M и P.
R Переключить клавиатуру в режим XLATE.
E Отправить сигнал SIGTERM всем процессам, кроме init. Ожидается, что приложения ответят на этот сигнал, приведут все в порядок и корректно завершатся.
I Отправить сигнал SIGKILL всем процессам, кроме init. Это принудительно завершает все процессы.
S Синхронизировать все файловые системы (т.е. записать буферизованныеданные на жесткий диск).
U Перемонтировать все файловые системы в режиме «только для чтения».
B Незамедлительно перезагрузиться.
O Вывести список задач в консоль.
M Вывести статистику использования памяти в консоль.
T Вывести список задач в консоль.
H Показать краткую информацию по использованию всех клавиш SysRq.
Персональные инструменты
купить
подписаться
Яндекс.Метрика