- R E I S U B — магическая перезагрузка Linux
- Кратко о SysRq
- Как использовать R E I S U B
- Примечание
- Примечание 2
- Keyboard shortcuts (Русский)
- Стандартные сочетания клавиш
- Ядро (SysRq)
- Включение
- Перезагрузка
- Завершение процесса, занимающего много памяти
- Решение проблем
- Консоль Linux
- Xorg и Wayland
- Настройка
- Readline
- Zsh
- Xorg
- sxhkd
- actkbd
- xbindkeys
- Среды рабочего стола
- Оконные менеджеры
- Сочетание клавиш для X-selection-paste
- Оконный менеджер XMonad
- Советы и рекомендации
- Смотрите также
R E I S U B — магическая перезагрузка Linux
У вас завис компьютер с любимой операционной системой Linux? Ничего не работает, мышка не двигается? Нужно перезагружать, но боязно? Прошлый раз после перезагрузки по питанию файловая система побилась и пришлось убить пол дня на переустановку системы? Нет резервных копий личных файлов?
Как правильно перезагрузить Linux если всё висит? Вам поможет клавиша SysRq и магическая комбинация R E I S U B! После такой перезагрузки не нужно выполнять FSCK.
Кратко о SysRq
84-я клавиша SysRq (System Request) была добавлена IBM в клавиатуру IBM PC/AT для того, чтобы можно было вызывать низкоуровневые функции операционной системы без риска конфликта с любым существовавшим программным обеспечением. Для кнопки SysRq было добавлено программное прерывание BIOS номер 0x15, подфункция 0x85, которое сообщало ОС о нажатии или отпускании клавиши SysRq.
Не будем сейчас упоминать Windows, там свои заморочки. А в Linux SysRq — единственная прямая связь с ядром (если ядро ещё способно работать), которая работает всегда, даже если всё другое не работает.
Как использовать R E I S U B
Во-первых, в конфигурации ядра должно быть включено использование клавиши SysRq. CONFIG_MAGIC_SYSRQ должно иметь значение Y.
Видов Linux много, где-то эта опция включена, где-то нет. В Debian и Ubuntu такая настройка есть. Проверить можно командой:
Если опция включена, то в ответ вернётся единица. Если вернётся ноль, то можно включить опцию:
Зажимаем Alt + SysRq и с интервалом в 2 секунды нажимаем по очереди клавиши R E I S U B . Каждая кнопка выполняет свою функцию. При такой комбинации происходит:
- un R aw — перехватывает управление мышью и клавиатурой у Х-сервера.
- t E rminate — посылает SIGTERM всем процессам, кроме init.
- k I ll — посылает SIGKILL всем процессам, кроме init.
- S ync — пытается синхронизировать все примонтированные файловые системы.
- U nmount — пытается перемонтировать все примонтированные файловые системы в режим read-only.
- re B oot — перезагрузка.
Примечание
Иногда клавиша SysRq совмещена на клавиатуре с какой-то другой, например PrtScr/SysRq. При нажатии получаем скриншот. Это можно обойти добавлением клавиши Ctrl. Тогда полная комбинация будет:
Ctrl + Alt + SysRq + R E I S U B
Примечание 2
Специалисты столкнулись с трудностями в поиске клавиши SysRq. Не оставим их в беде. Итак, задачка. Найди SysRq на картинке:
Keyboard shortcuts (Русский)
Состояние перевода: На этой странице представлен перевод статьи Keyboard shortcuts. Дата последней синхронизации: 14 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
В этой статье приведен список (не общеизвестных) стандартных сочетаний клавиш и предоставляется информация о пользовательской настройке.
Стандартные сочетания клавиш
Ядро (SysRq)
Имеется несколько низкоуровненных сочетаний клавиш, реализованных в ядре и которые могут быть использованы для отладки и восстановления зависнувшей системы. Всякий раз, когда это возможно, рекомендуется использовать эти сочетания клавиш вместо аппаратного выключения (удержание кнопки включения компьютера до полного отключения системы).
Включение
В systemd битовая маска разрешений sysrq по умолчанию установлена на 0x10, что не позволяет, в частности, отправлять процессам сигналы или перезагружаться. Чтобы разрешить полное использование sysrq в вашей системе, добавьте kernel.sysrq = 1 в конфигурацию sysctl. Значения больше 1 могут использоваться для выборочного включения функций sysrq; подробности описаны в документации ядра. Если хотите убедиться, что они будут включены даже до монтирования разделов и перед initrd, добавьте sysrq_always_enabled=1 в параметры ядра.
Обратите внимание, что изменение этих настроек является постоянным. Если вы хотите изменить параметры sysrq только для текущего сеанса, можно использовать sysctl kernel.sysrq=1 или echo «1» > /proc/sys/kernel/sysrq .
Полное включение sysrq связано с некоторыми очевидными рисками безопасности. Помимо принудительных перезагрузок и тому подобного, sysrq может использоваться для дампа содержимого регистров процессора, что теоретически может раскрыть конфиденциальную информацию. Поскольку для его использования требуется физический доступ к системе (если только вы не вынесете управление sysrq за её пределы), большинство пользователей настольных компьютеров, вероятно, сочтут уровень риска приемлемым. Тем не менее, прежде чем включить sysrq, убедитесь, что вы полностью понимаете последствия его использования и динамику контекста, в котором работает ваша система.
Перезагрузка
Общая идиома для запоминания этих сочетаний клавиш — «Reboot Even If System Utterly Broken» (сокращенно «REISUB»). Кроме того, подумайте об этом наоборот «BUSIER».
Примечание: Имейте в виду, что «REISUB» — это просто мнемоника, а не какая-то общая рекомендация по нажатию клавиш для возвращения контроля над зависшей системой. Не следует слепо нажимать эти сочетания без понимания, что они делают.
Сочетание клавиш | Описание | Код для включения | Другие включаемые функции |
---|---|---|---|
Alt+SysRq+r Unraw | Забирает клавиатуру от X для управления. | 4 | Alt+SysRq+k SAK |
Alt+SysRq+e Terminate | Отправляет SIGTERM всем процессам. Этот сигнал запрашивает завершение процесса, но он может быть проигнорирован. | 64 | Alt+SysRq+f OOM kill Alt+SysRq+j Thaw |
Alt+SysRq+i Kill | Отправляет SIGKILL всем процессам. Этот сигнал вызывает немедленное завершение процесса. | ||
Alt+SysRq+s Sync | Сбрасывает данные на диск. | 16 | — |
Alt+SysRq+u Unmount | Монтирует все файловые системы только для чтения. | 32 | — |
Alt+SysRq+b Reboot | Перезагружает | 128 | — |
Например, чтобы выборочно включить только функцию перезагрузки, установите kernel.sysrq в 128. Весь набор функций REISUB можно включить, установив значение 244, хотя это также включает дополнительные функции, перечисленные в последнем столбце таблицы. Дополнительную документацию смотрите в документации ядра и в исходном файле ядра /drivers/tty/sysrq.c .
Завершение процесса, занимающего много памяти
Можно использовать Alt+SysRq+f для вызова OOM (out-of-memory) killer, не вызывая паники ядра, если ничего не может быть убито. OOM killer использует набор эвристик, чтобы выбрать не очень важный процесс, использующий больше всего памяти, и убить его. Это очень полезно для завершения процесса, который заблокировал вашу систему, например, запущенный скрипт браузера, и во многих случаях может избавить от необходимости перезагрузки. Обратите внимание, что OOM killer может быть нацелен на широкий спектр процессов, несмотря на его благонамеренную эвристику, и может быть несколько непредсказуемым, поэтому будьте осторожны с его вызовом.
Решение проблем
- Если вы используете экранный менеджер и после Alt+SysRq+e появляется экран входа в систему (или рабочий стол, если включен автовход), скорее всего это вызвано директивой Restart=always в соответствующем файле службы. Если нужно отредактируйте юнит, однако это не должно препятствовать работе последовательности «REISUB».
- Если все вышеперечисленные комбинации работают, кроме Alt+SysRq+b , попробуйте использовать контралатеральную клавишу Alt .
- На ноутбуках, использующих клавишу Fn для переключения SysRq / PrtScrn , на самом деле не обязательно использовать Fn (например, Alt+PrtSc+буква должно работать).
- На ноутбуках Lenovo клавиша SysRq часто настроена как Fn+S . Чтобы использовать ее нажмите и держите Alt , затем нажмите Fn+s , отпустите Fn и s все еще удерживайте Alt , а затем нажмите необходимую клавишу-букву.
- Вам может потребоваться нажать Ctrl вместе с Alt . Так например, полное сочетание клавиш будет таким: Ctrl+Alt+SysRq+b .
Консоль Linux
Xorg и Wayland
Сочетание клавиш | Описание | Примечание |
---|---|---|
Ctrl+Alt+F1 , F2 , F3 , . | Переключиться на n-ную виртуальную консоль | Если это не работает, попробуйте Ctrl+Fn+Alt+F… . |
Shift+Insert Mouse Button 2 | Вставить текст из буфера PRIMARY | По умолчанию Shift+Insert Qt соответствует CLIPBOARD вместо буфера PRIMARY (посмотрите, например, [1]) и Ctrl+Shift+Insert — буферу PRIMARY. |
Настройка
Readline
Readline — это широко используемая библиотека для редактирования строк; она используется, например, в Bash, FTP и многих других программах (больше примеров можно посмотреть в разделе «Required By» в описании пакета readline ). Она имеет Emacs-подобные и vi-подобные режимы редактирования, которые можно настроить с помощью управляющих последовательностей. Стандартные сочетания клавиш описаны в readline(3) и документации Info.
Zsh
Zsh использует ZLE для виджетов, скриптов и команд.
Xorg
Чтобы узнать некоторые общие сочетания клавиш, которые по умолчанию отключены, смотрите Конфигурация клавиатуры в Xorg#Часто используемые опции XKB.
Когда мы находимся в графическом окружение, мы можем захотеть выполнить команду при нажатии определенной комбинации клавиш (то есть привязать команду к keysym). Существует несколько способов сделать это:
- Самый портативный способ. Использование инструментов низкого уровня, таких как acpid. Не все клавиши поддерживаются, но конфигурация в унифицированном виде возможна для клавиш клавиатуры, подключения адаптера питания и даже для подключения/отключения наушников. Также трудно запускать программы внутри X сеанса правильно.
- Универсальный способ. Использование утилит Xorg (например, xbindkeys) и, в конечном итоге, инструментов вашего окружения рабочего стола или оконного менеджера.
- Более быстрый способ. Использование сторонних программ, где все можно сделать в GUI, таких как Gnome Control Center.
sxhkd
Простой демон X hotkey с мощным и компактным синтаксисом конфигурации. Для получения дополнительной информации смотрите sxhkd.
actkbd
actkbd AUR (доступно в AUR) — простой демон, который связывает действия с событиями клавиатуры. Он распознаёт сочетания клавиш и может обрабатывать события нажатия, удержания и отпускания. В настоящее время он поддерживает только интерфейс linux-2.6 evdev. Он использует текстовый файл конфигурации, который содержит все привязки.
Образец конфигурации и руководство по настройке можно найти здесь.
xbindkeys
xbindkeys позволяет расширенное сопоставление клавиш с действиями независимо от окружения рабочего стола.
Совет: Если вы находите xbindkeys сложным в использование, попробуйте графический менеджер xbindkeys_config-gtk2 AUR из AUR.
Среды рабочего стола
Оконные менеджеры
Сочетание клавиш для X-selection-paste
The factual accuracy of this article or section is disputed.
This article or section needs expansion.
Пользователи, которые предпочитают работать скорее с клавиатурой, чем с мышью, могут извлечь выгоду из сочетаний клавиш к операции вставки средней кнопки мыши. Это особенно полезно в среде, которая управляется клавиатурой. Пример работы:
- В Firefox выберите строку, которую вы хотите использовать для Google (с помощью мыши).
- Нажмите Ctrl+k , чтобы ввести поле «поисковая система».
- Нажмите F9 , чтобы вставить буфер, вместо того, чтобы перемещать указатель мыши в поле и щелкать по колесику для вставки.
Примечание: Shift+Insert имеет сходную, но другую функциональность, для получения дополнительной информации смотрите #Xorg: Shift+Insert вставляет буфер clipboard, а не x-selection-paste. В некоторых приложениях эти два буфера зеркалируются.
В предлагаемом здесь способе используются следующие три пакета:
- xsel для предоставления доступа к содержимому буфера the x-selection-buffer.
- Xbindkeys для связывания клавиши к действию.
- xvkbdAUR для передачи буферной строки в приложение путем эмуляции ввода клавиатуры.
В этом примере операция x-selection-paste связывается с клавишей F9 :
"xvkbd -no-jump-pointer -xsendevent -text "\D1`xsel`" 2>/dev/null" F9
Префикс кода «\D1» устанавливает задержку 100 мс для вставки буфера (для получения дополнительной информации смотрите домашнюю страницу xvkbd).
Примечание: В зависимости от ваших настроек X вам может потребоваться убрать аргумент -xsendevent для xvkbd.
Коды клавиш отличных от F9 можно определить с помощью xbindkeys -k .
Оконный менеджер XMonad
В оконном менеджере xmonad есть встроенная функция для вставки содержимого x-selection-buffer. Чтобы связать эту функцию с клавишей (здесь с Insert ) , можно использовать следующие настройки:
import XMonad.Util.Paste . -- X-selection-paste buffer , ((0, xK_Insert), pasteSelection) ]