Магические клавиши
Март 15, 2008
Есть проблемы? Иногда проще прервать процесс и запустить его снова.
-Почему компьютеры имеют кнопку Reset?
Потому что они поставляются с операционной системой от Microsoft. Эта шутка так стара, что ее слышали еще динозавры. По-вашему, программы Linux никогда не падают? Ядро Linux очень стабильно, и крах приложений обычно слабо влияет на состояние системы. Но иногда дефектный процесс может навредить, если захватит все процессорные циклы или всю память (или все вместе) и в итоге потребует перезагрузки. Или случайно запаниковавшее ядро может заморозить процесс загрузки.
-Значит, нам все-таки надо нажимать на Reset?
А вот и нет. Ядро Linux немного умеет колдовать: если вы нажмете Alt + SysRq и командную клавишу, ядро всегда воспримет команду, даже будучи полностью заблокированным. Так как это функция ядра, она готова к работе сразу после его загрузки, и вы можете использовать ее
во время запуска.
-Я не смог найти клавишу SysRq, что я делаю не так?
Клавиша SysRq также используется для Print Screen, на ней может быть одна из этих надписей или обе.
-Что это за командные клавиши?
Их несколько, для выполнения различных операций, но чаще всего используются E, I, S, U и B, нажимаемые именно в таком порядке.
• E посылает всем процессам сигнал ERM.
• I посылает сигнал KILL. Не используйте ее на удаленных сессиях, так как она разорвет сетевое соединение.
• S синхронизирует все смонтированные файловые системы, т.е. немедленно записывает на диск все данные из кэша.
• U отмонтирует все смонтированные файловые системы и перемонтирует их в режиме только-для-чтения.
Последние две операции гарантируют, что содержимое ваших дисков корректно запишется и не будет повреждено. Это сделает безопасным нажатие еще одной командной клавиши:
• B для перезагрузки, которая перезагружает систему немедленно.
Так как ваши диски синхронизированы, вы не увидите предупреждений при перезагрузке, и не надо будет запускать fsck.
-Это все прекрасно при наличии доступа к клавиатуре компьютера, а если он удаленный и лишен периферии?
В этом случае можно использовать магию команд вроде этой:
echo s >/proc/sysrq-trigger
Если вы способны просочиться в компьютер, то можно выполнить синхронизацию и выключение.
-Как я могу запретить другим использовать эти клавиши?
Просто набрав:
echo 0 >/proc/sys/kernel/sysrq
echo 1 >/proc/sys/kernel/sysrq
вы выключите и включите их соответственно; сделать это можно только от имени суперпользователя. Вы также можете включить команды выборочно: это описано в документации.
-Какие другие клавиши и команды можно использовать?
Полный список и всякие подробности можно найти в документации ядра. Если у вас установлен исходный код ядра, вы можете найти ее в /usr/src/linux/Documentation/sysrq.txt; также посмотрите в сети на www.mjmwired.net/kernel/Documentation/sysrq.txt.










Leave a Reply