- SysRQ или как привести в чувство «зависший» Linux
- Что делать
- Работа по SSH
- Дополнительно
- 06.10.2011 Включение системной клавиши Alt+SysRq
- Перезагрузка Linux через консоль
- Перезагружаем Linux через консоль
- Способ 1: Команда reboot
- Способ 2: Команда shutdown
- Способ 3: Init Script
- Способ 4: Служба системных сообщений D-Bus
- Способ 5: Горячие клавиши SysRq
- Способ 6: Удаленная перезагрузка
- Способ 7: Перезагрузка в Recovery Mode
Наше дело — воткнуть пылающий факел знаний в немытую жопу невежества!
SysRQ или как привести в чувство «зависший» Linux
25.03.09 23:21 / Обновлено 06.02.14 03:18 | Версия для печати | Linux | Твики |
Не всё то Windows, что висит.
Иногда такое случается. Вот пользователь, недавно пересевший с виндуза на линукс, сидит, работает, никого не трогает. И вдруг картинка на экране превращается в статическую, окна не двигаются и не помогает даже заветное сочетание Ctrl— Alt— BkSpace, которое подсказал админ как раз на такие случаи, потому что клавиатура тоже не работает. Что делать?
Спинной мозг с виндовым опытом, подсказывают, что надо давить кнопку Reset.
Не делайте этого!
Вы можете лишиться данных, накопленных годами работы за компьютером (конечно, надо делать резервные копии, но обычный пользователь не делает их никогда, это тема для отдельной статьи) и это ещё не самое неприятное, что может случиться.
Linux только выглядит зависшим, но на деле, скорее всего, это не так. Лично я видел только один раз действительно зависший Linux (KERNEL PANIC), но у того компьютера были серьёзные проблемы с оборудованием.
Что делать
Годы, проведённые за виндузом, заставили пользователя воспринимать клавишу PrtScr/SysRq на клавиатуре как кнопочку для снятия картинки с экрана. Наиболее продвинутые пользователи знают, что сочетание Alt— PrtScr/SysRq делает картинку не всего экрана, а только активного окна. И совсем немногие знают, что PrtScr/SysRq — одна из «низкоуровневых» клавиш, для получения сигнала с которой не нужны костыли типа драйверов.
Нажмите сочетание клавиш Alt— PrtScr/SysRq (в графике надо добавлять ещё и Ctrl, то есть нажимать Ctrl— Alt— PrtScr/SysRq) и, удерживая их, жмите на клавиатуре: R E I S U B.
Alt— PrtScr/SysRq— R — отберёт управление клавиатурой у графики Linux и заставит её работать напрямую с системой. По сути — вернёт управление клавиатурой.
Alt— PrtScr/SysRq— E — пошлёт сигнал завершения всем запущеным процессам, кроме init. То есть, все пользовательские процессы постараются завершиться в штатном режиме.
Alt— PrtScr/SysRq— I — пошлёт сигнал уничтожения всем запущенным процессам, кроме init. Теперь процессы, включая те, чьё нормальное завершение невозможно — уничтожатся.
Alt— PrtScr/SysRq— S — синхронизирует диски, что уменьшает риски повреждения данных от сбоя.
Alt— PrtScr/SysRq— U — отмонтирует все файловые системы.
Alt— PrtScr/SysRq— B — перезагрузит систему.
Между нажатиями кнопок делайте паузу, чтобы предыдущая команда успела завершиться.
Работая из «зависшей» графики делайте большую паузу.
Работа по SSH
Всё-таки лень — великая вещь. Всё вышеописанное можно сделать не только находясь рядом с компьютером, но и по удалённому доступу через SSH.
Например, делаем очень небезопасную перезагрузку:
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
Дополнительно
Вот список интересных сочетаний с комбинацией Alt— PrtScr/SysRq:
+Клавиша | Действие |
---|---|
R | UnRaw, выключает режим RAW клавиатуры, что позволяет её использование без системы X-Window |
K | Secure Access Key, убивает все программы в текущей виртуальной консоли. Полезно, когда могут работать программы, способные украсть пароль или работают процессы, мешающие переключить консоль |
E | SIGTERM, завершает все запущенные процессы, кроме init |
I | SIGKILL, уничтожает все запущенные процессы, кроме init |
L | kiLl, уничтожает вообще все запущенные процессы |
B | reBoot, немедленно перезагружает компьютер |
S | Sync, синхронизирует диски |
U | Umount, отмонтирует все файловые системы |
O | tirn Off, немедленно выключает компьютер |
P | PС, выгружает регистры и указатели в консоль |
T | Tasks, показывает в консоли список всех процессов |
M | Memory, показывает в консоли информацию о памяти |
Задаёт уровень логирования ядра и перенаправляет вывод лога на экран |
06.10.2011 Включение системной клавиши Alt+SysRq
Буквально пару дней назад писал о методе мягкой перезагрузки линукс через Alt+Sysrq+REISUB, как узнал, что у многих данная комбинация попросту не срабатывает…
Оказалось, что зависит это всего лишь от одной команды для ядра, и исправляется секудным вмешательством в конфигурацию…
Прежде всего, стоит проверить поддерживает ли ядро комбинации клавиш с сипользованием SysRq:
zcat /proc/config.gz | grep -i sysrq
Ответом должно быть – CONFIG_MAGIC_SYSRQ= y
Если при этом системная клавиша SysRq не работает, значит сама возможность отключена в настройках ядра. Проверяем, так ли это командой:
sysctl -a 2>/dev/null | grep -i sysrq
Если результат будет – kernel.sysrq = 0 , значит все именно так.
Для того, чтобы включить SysRq задаем в терминале команду:
sudo sysctl -w «kernel.sysrq=1»
…и все заработает
Ну а чтобы работало каждый раз после перезагрузки системы, необходимо добавить в файл /etc/sysctl.conf параметр
…либо, если данный параметр уже имеется в файле и равен нулю, сменить его значение на единичку.
Для однократного включения клавиши (до перезагрузки):
Источник
Перезагрузка Linux через консоль
Обладатели разных дистрибутивов Linux время от времени сталкиваются с необходимостью перезагрузки операционной системы, что требуется делать после внесения каких-либо изменений в параметры или при появлении неполадок. Обычно поставленная задача осуществляется через графический интерфейс, но этот вариант не всегда получается использовать эффективно. Именно поэтому многие прибегают к вводу терминальных команд, которые и отвечают за подачу сигнала на перезагрузку. Сегодня мы хотим рассказать вам обо всех доступных способах перезапуска Линукс через консоль на примере Ubuntu.
Перезагружаем Linux через консоль
Как вы уже знаете, сегодняшние инструкции будут основаны на Ubuntu, однако и обладателям других дистрибутивов они тоже окажутся полезными, поскольку различия практически никогда не наблюдаются. Если же вдруг вы увидите сообщение об ошибке при попытке ввода какой-то команды, в следующих строках отобразится информация о том, почему этот запрос не может быть выполнен. Используйте полученные сведения, чтобы найти альтернативу, например, в официальной документации. Мы же переходим к рассмотрению всех методов, а их существует достаточное количество.
Способ 1: Команда reboot
О команде reboot наверняка слышали даже самые начинающие пользователи операционных систем Linux. Вся ее суть как раз и заключается в отправке текущего сеанса на перезагрузку, а дополнительные аргументы при этом не указываются.
- Откройте меню приложений и запустите оттуда «Терминал». Для этого вы можете задействовать и другой удобный вариант, например, стандартную горячую клавишу Ctrl + Alt + T.
Действие перезагрузки через reboot обязательно выполняется от имени суперпользователя, поэтому вводимая строка выглядит так: sudo reboot .
Соответственно, потребуется подтвердить учетную запись, написав пароль от нее. Учитывайте, что вводимые символы пароля в консоли никогда не отображаются.
Компьютер сразу же завершит свою работу, и через несколько секунд запустится новый сеанс в обычном режиме. Автоматически включится виртуальная консоль с графической оболочкой, даже если до этого вы использовали другой терминал.
Способ 2: Команда shutdown
Иногда юзеру требуется, чтобы ПК перезапустился через определенное количество времени, например, через несколько минут. Команда reboot не очень подходит для таких целей, поэтому мы предлагаем воспользоваться альтернативой в виде shutdown.
- Запустите «Терминал» и укажите sudo shutdown -r +1 , где +1 — время, через которое команда будет приведена в действие. В данном случае это одна минута. Укажите 0 или now, если хотите запустить интересующий процесс немедленно.
Команда shutdown тоже зависит от суперпользователя, поэтому для ее активации понадобится ввести пароль.
Способ 3: Init Script
Некоторые дистрибутивы поддерживают Init Script, о чем более детально вы можете прочесть в их официальных документациях. Там же будет написано и об основных настройках, связанных с данными скриптами. Сейчас мы опустим все эти моменты, поскольку они не вписываются в рамки этого материала. Расскажем лишь то, что у init есть шесть параметров, где 0 — выключение компьютера, а 6 — перезагрузка сеанса. Именно последний параметр мы и будем применять сейчас. Для его активации в консоли придется ввести sudo init 6 . Как вы уже поняли из приставки sudo, это действие тоже осуществляется только через root.
Способ 4: Служба системных сообщений D-Bus
Как вы наверняка заметили, все три приведенных выше способа для активации требовали наличия пароля суперпользователя, однако не у всех юзеров есть возможность ввести его. Специально для таких целей мы и предлагаем воспользоваться службой системных сообщений D-Bus. Это стандартная утилита Linux, позволяющая программам взаимодействовать друг с другом, а длинная и непонятная команда, отправляющая систему на перезапуск, следующая: /usr/bin/dbus-send —system —print-reply —dest=»org.freedesktop.ConsoleKit» /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart . После ее ввода и активации текущий сеанс сразу же будет завершен.
Способ 5: Горячие клавиши SysRq
Этот метод только косвенно связан с консолью, поскольку через нее производится настройка, а дальнейшая перезагрузка выполняется через горячие клавиши. Однако мы решили включить его в этот список из-за необычности и особенностей использования. Горячие клавиши SysRq пригодятся в тех ситуациях, когда графическая оболочка попросту не отвечает.
- Запустите «Терминал» и введите там echo 1 > /proc/sys/kernel/sysrq .
Следом откройте файл конфигурации через удобный текстовый редактор, например, sudo nano /etc/sysctl.conf .
Этот файл расположен в системном разделе, поэтому для открытия понадобятся права суперпользователя.
Опуститесь вниз файла и вставьте туда строку kernel.sysrq = 1 .
Сохраните настройки и закройте текстовый редактор.
После этого потребуется зажать Alt + SysRq + Код клавиши. Об этом мы детальнее поговорим далее.
Корректный перезапуск осуществляется путем указания определенной последовательности кодов клавиш. Каждый из них имеет следующий вид:
- R — вернет управление клавиатурой, если работа той была непредвиденно завершена.
- E — пошлет всем процессам сигнал SIGTERM, что приведет к их завершению.
- I — делает то же самое, но только через сигнал SIGKILL. Требуется в тех случаях, если некоторые процессы не были завершены после SIGTERM.
- S — отвечает за синхронизацию файловых систем. Во время этой операции вся информация будет сохранена на жестком диске.
- U — отмонтирует ФС и смонтирует их заново в режиме только для чтения.
- B — запустит процесс перезагрузки компьютера, игнорируя все предупреждения.
Вам осталось только нажать каждую эту комбинацию в этой же очередности, чтобы перезагрузка прошла корректно.
Способ 6: Удаленная перезагрузка
Некоторые пользователи активно задействуют специальные инструменты по удаленному управлению рабочими столами. Часто в подобных решениях имеются соответствующие команды, позволяющие отправить необходимый компьютер на перезапуск. Например, обратите внимание на следующий параметр SSH: ssh root@remote-server.com /sbin/reboot . Именно по этому принципу происходит перезапуск выбранного удаленного ПК на этом сервере. Если вы используете другие средства управления, прочтите официальную документацию, чтобы получить нужные сведения.
Способ 7: Перезагрузка в Recovery Mode
В качестве последнего способа мы хотим рассказать, как осуществляется перезагрузка ПК в Recovery Mode, поскольку многие пользователи теряются в этом меню и просто выключают компьютер через кнопку, а потом заново его запускают. В случае, когда вы перешли в режим восстановления, можете запустить консоль и использовать любой из приведенных выше методов:
- В меню восстановления вас интересует пункт «Продолжить нормальную загрузку» или «Перейти в командный интерпретатор суперпользователя». В первом случае просто начнется старт ОС в обычном режиме, а второй пункт запустит консоль в root.
Если вы запускаете терминал, то подтвердите эту операцию нажатием на клавишу Enter.
Далее остается только ввести подходящую команду, например, reboot , чтобы отправить ПК на перезапуск.
Как видите, существует огромное количество методов, позволяющих быстро перезагрузить систему Linux через консоль. Осталось только понять, какой из этих вариантов следует использовать в определенной ситуации, чтобы соответствовать возникшим условиям, которые требуют перезапуска ОС.
Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник