Есть проблемы? Иногда проще прервать процесс и запустить его снова.

 -Почему компьютеры имеют кнопку 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