SysRq или SysReq (сокращение от ) — клавиша на клавиатуре для IBM PC-совместимого компьютера, появившаяся впервые в PC/AT и не имеющая стандартного назначения «Dead keys… SysRq». Изначально появилась на клавиатуре терминалов типа IBM 3270 для мейнфрейма IBM System/370, где использовалась для переключения ввода напрямую в ОС VM/370 или MVS.
В современных операционных системах может быть включена для специального использования. В 84-кнопочной версии клавиатуры IBM PC/AT SysRq была отдельной клавишей, в современных клавиатурах она совмещена с клавишей Print Screen.
История 84-я клавиша, SysRq, была добавлена IBM в клавиатуру для IBM PC/AT для того, чтобы можно было вызывать низкоуровневые функции операционной системы без риска конфликта с любым существовавшим программным обеспечением. Было добавлено программное прерывание BIOS номер 0x15, подфункция 0x85PC Mag 25 Jun 1991 page 418 «Summary of BIOS Services», которое сообщало ОС о нажатии или отпускании клавиши SysRq. В отличие от большинства клавиш, нажатие SysRq не добавляло чего-либо в .
Низкоуровневая реализация SysRq, вероятно, планировалась для переключения между операционными системами. Так, во время создания первых IBM-PC в 1980-х на них широко использовались три системы: PC DOS, CP/M-86 и UCSD p-System, а в 1983—1984 появилась Xenix.
Специальная клавиша была создана, чтобы обойти различные низкоуровневые TSR-программы, работавшие с клавиатурой в обход ОС, например, для реализации горячих клавиш.
Применение В ОС Windows (то есть ), нажатая вместе с , копирует изображение активного окна в буфер обмена.
Компания Microsoft иногда использовала для различных отладчиков, как уровня ОС, так и уровня приложения. Некоторые версии отладчика CodeView использовали клавишу для прерывания программы во время исполнения и переключения в отладочный интерфейс. Удаленный отладчик ядра Windows NT использовал последовательность нажатий + для включения отладочного режима.
В ПК Hyundai/Hynix Super-16 нажатие приводит к холодной перезагрузке, в том числе, когда уже не работает.
Во встраиваемых системах изредка переключает сигнал RESET# в нижний уровень.
SysRq в UNIX/Linux Клавиша SysRq — единственная прямая связь с ядром, которая работает всегда, если работает ядро, так как соответствующие комбинации напрямую перехватываются ядром и соответствующий код является частью драйвера клавиатуры (см. ). При помощи некоторых комбинаций клавиш можно заставить систему аварийно сбросить данные на диски, перемонтировать все файловые системы в режим «только чтение», перезагрузиться или перезапустить графическую подсистему даже при зависшей системе.
Использование Сначала нужно убедиться, что использование клавиши включено: в конфигурации ядра CONFIG_MAGIC_SYSRQ должно иметь значение Y (например, в ядре, используемом в Debian по умолчанию, это так). Далее необходимо нажать и удерживать последовательно Alt и SysRq и нажать одну из командных клавиш. В графических окружениях (GNOME, KDE, …) нажатие PrtScr/SysRq обычно приводит лишь к созданию скриншота, и последующая команда может не восприниматься ядром. Это можно обойти, если дополнительно удерживать Ctrl, то есть полная комбинация будет Ctrl + Alt + SysRq + клавиша. Если вместо командной клавиши нажать любую другую, то на виртуальный текстовый терминал для сообщений ядра (обычно № 10) выведется несколько строчек краткой помощи по использованию. Это удобно использовать как быстрый способ убедиться, что параметр CONFIG_MAGIC_SYSRQ в загруженном ядре включен.
Список команд SysRq в Linux Одновременное нажатие клавиш Alt + SysRq + буква.
Если SysRq вызывается с использованием Fn, то следует зажать Alt + Fn + SysRq, затем отпустить Fn и ввести букву команды.
Действие QWERTY Dvorak AZERTY Colemak Установка уровня журнала консоли, который управляет типами сообщений ядра, выводимых на консоль — — — (без ) — Немедленная перезагрузка системы, не размонтируя и не синхронизируя файловые системы Выполнение сбоя системы. Будет создан аварийный дамп, если он настроен Отображение всех удерживаемых в данный момент блокировки (требуется опция ядра ) Отправка сигнала всем процессам, кроме init (PID 1) Вызов , который убьёт процесс, чтобы облегчить состояние OOM При использовании Kernel Mode Setting, переключение на консоль фреймбуфера ядра.Если присутствует встроенный отладчик ядра , вход в отладчик Вывод краткого справочного документа на консольЛюбая клавиша, не связанная с командой, также должна выполнять это действие. Отправка сигнала всем процессам, кроме Принудительная «разморозка» файловых систем, замороженных с помощью ioctl Завершение всех процессов на текущей виртуальной консоли (можно убить программы X и SVGAlib, см. ниже)Изначально это было разработано для имитации Secure attention key Показ обратной трассировки стека для всех активных ЦП Вывод текущей информации о памяти на консоль Сброс уровня nice для всех высокоприоритетных задач и задач реального времени Отключение системы Вывод текущих регистров и флагов на консоль Отображение всех активных таймеров высокого разрешения и источников синхронизации Переключение клавиатуры из режима Raw, используемого такими программами, как X11 и SVGAlib, в режим XLATE Синхронизация все смонтированных файловых систем Вывод списка текущих задач и информации о них на консоль Перемонтирование всех смонтированных файловых систем в режиме только для чтения Принудительное восстановление консоли фреймбуфера.Для процессоров ARM вместо этого вызов дампа буфера ETM Отображение списка заблокированных (состояние D) задач Используется интерфейсом xmon на платформах PowerPC.Показ глобальных регистров PMU на sparc64.Сброс всех записей TLB на MIPS. Показ глобальных регистров ЦП (специфично для SPARC-64) Дамп буфера трассировки ftrace
Alt + SysRq + 0-9loglevel0-9 — позволяет менять уровень подробности вывода от 0 (только критические сообщения) до 8 (самый подробный режим);Alt + SysRq + BreBoot — выполняет немедленную перезагрузку системы аналогично кнопке RESET (без синхронизации и размонтирования файловых систем);Alt + SysRq + CCrashdump — выполняет директиву kexec для перезагрузки, чтобы получить сведения об ошибках;Alt + SysRq + DholDs — показывает все блокировки, которые держат устройства или файлы;Alt + SysRq + EtErm — послать сигнал завершения работы SIGTERM всем процессам, кроме init;Alt + SysRq + FFull — позволяет вызвать обработчик oom_kill (out-of-memory kill) для прерывания приложений, забравших слишком много памяти (может занять продолжительное время). Используйте его, если свободная память совсем истощилась, так что система не реагирует ни на какой иной ввод (курсор мыши не движется, индикаторы NumLock/CapsLock не включаются, но индикатор работы накопителя всё время включен);Alt + SysRq + HHelp — выводит все доступные возможности SysRq, выделяя большой буквой клавишу действия;Alt + SysRq + IKILL — послать сигнал немедленного завершения работы SIGKILL всем процессам, кроме init.Alt + SysRq + Ksecure access Key — убивает все процессы на текущей консоли. Её следует применять для снятия зависшего X-сервера. При этом графический сервер будет остановлен и невозможно будет увидеть ввод-вывод либо пока X-сервер не перезапустится, либо пока видеорежим не будет исправлен вручную;Alt + SysRq + MshowMem — выдаст информацию о доступной и занятой оперативной памяти, а также степени использования свопа;Alt + SysRq + NNice — используется для того, чтобы сбросить приоритет задачи реального времени или просто с измененным приоритетом;Alt + SysRq + OpowerOff — корректно выключает систему (если настроено и поддерживается, обычно это прямая команда отключения);Alt + SysRq + RunRaw — перехватывает управление мышью и клавиатурой у Х-сервера, что полезно, если Х-сервер завис: так можно перейти в консоль, убить Х-сервер или проверить логи;Alt + SysRq + SSync — пытается синхронизировать все примонтированные файловые системы, при этом пишет в консоли «Emergency Sync». При успешном завершении выводится «Emergency Sync Complete»;Alt + SysRq + TshowTasks — выдаст список текущих задач и информацию о них в текущую консоль;Alt + SysRq + UUnmount — пытается перемонтировать все примонтированные файловые системы в режим «только чтение»;Alt + SysRq + WshoW-blocked-tasks — выдаст список всех непрерываемых (заблокированных, ждущих окончание ввода-вывода) задач;
То есть, например, для аварийной синхронизации данных следует выполнить последовательность Alt + SysRq + S, далее Alt + SysRq + U. После этого можно жать на сброс или, что то же самое, Alt + SysRq + B.
Более правильно экстренную перезагрузку стоит проводить, зажав клавиши Alt + SysRq и с интервалом в 2—3 секунды нажать последовательно: R E I S U B unRaw (перехватить управление клавиатурой), tErminate (послать SIGTERM всем процессам), kIll (послать SIGKILL всем процессам, которые не смогли завершиться предыдущей командой), Sync (синхронизировать файловые системы), Unmount (перемонтировать файловые системы в режим «только чтение»), reBoot. (и напоследок, совершить перезагрузку)
Есть и другие мнемоники для запоминания этой последовательности, см .
При недоступности работы с терминалом сочетание клавиш можно послать /proc/sysrq-trigger
Например, команда echo «h» > /proc/sysrq-trigger выведет список возможных сигналов в dmesg.
Для того, чтобы восстановить управление клавиатурой X-сервером, после unRaw используйте следующую команду с правами суперпользователя: kbd_mode -s -C /dev/tty7Recovering from Sys Rq + r. Вместо tty7 (7 — обычный номер для запуска X-сервера) можно использовать tty$(fgconsole) для программного определения номера tty.
Примечания
Литература System BIOS for IBM PC/XT/AT computers and compatibles // Phoenix Technologies, Addison-Wesley Pub. Co., 1989
Ссылки SysRq: Убийца процессов // Linuxcenter.ru. SysRQ или как привести в чувство «зависший» Linux Документация ядра Linux о Sysrq
Категория:Linux