Linux - the Best!

Your Explorer by Linux links...

Денис Колисниченко

Linux Советы

http://www.dkws.org.ua/

Совет №21. SysRq или что делать во время аварии?

Linux считается одной из самых надежных операционных систем, но иногда и она зависает. Все мы знаем, две волшебные комбинации клавиш - Ctrl + Alt + Del и Ctrl + Alt + Backspace. Первая используется для перезагрузки системы, а вторая - для перезапуска X Window, если последняя зависла. Что же делать, если система все-таки зависла? Сразу нужно оговориться, что тут все зависит от "степени зависания" - может зависнуть так, что система не будет реагировать на внешние сигналы (в том числе и нажатия клавиш) - в этом случае уже ничем, кроме Reset, не поможешь. Но попытаться помочь системе сохранить данные в случае сбоя все же можно. Об этом сейчас мы и поговорим. Обратите внимание на клавишу PrtScr (PrintScreen). Сверху действительно написано PrtScr, а внизу - SysRq. Нажав Alt + PrtScr и одну из буквенных клавиш, вы можете произвести некоторые действия, которые очень помогают в аварийных ситуациях. Все возможные комбинации клавиш с клавишей SysRq вы найдете в текстовом файле sysrq.txt (обычно он находится в каталоге /usr/src/linux/Documentation/systq.txt). Мы рассмотрим лишь самые полезные из них.

Alt + SysRq + K

Нажав эту комбинацию клавиш, вы сможете "убить" все зависшие процессы (точнее "убиваются" все процессы, запущенные на текущей виртуальной консоли), которые не отвечают на Ctrl + C и их нельзя завершить обычным образом. Эта же комбинация клавиш помогает и в тех случаях, когда зависла система X Window и не реагирует даже на нажатие Ctrl + Alt + Backspace. Конечно, можно нажать Ctrl + Alt + Del, но не хочется перезагружать систему. Данная комбинация клавиш полезна не только для снятия зависших процессов. Ее полезно использовать, если в вашей системе установлена злоумышленником программа, эмулирующая работу процесса login - она выводит стандартное приглашение (вы его не отличите от приглашения стандартного login), получает от вас пароль, записывает его в специальный файл, а потом выводит сообщения, что вы ввели некорректный пароль и передает управление оригинальной программе login. Вы даже ничего можете и не заподозрить - подумаешь, может, на самом деле ввел неправильный пароль. После нажатия этой комбинации клавиш происходит завершение всех процессов, кроме оригинального login - все программы, которые маскируются под login, будут также завершены. Данную комбинацию клавиш также называют SAK (Secure Access Key). О SAK вы сможете прочитать в файле /usr/src/linux/Documentation/SAK.txt

Alt + SysRq + E (tErm)

Посылает всем процессам в системе (кроме init) сигнал SIGTERM. После этого в системе остаются только ядро, init и на текущей консоли. После этого можно запустить заново все сервисы (init 3 или nit 5).

Alt + SysRq + I (kIll)

<Аналогична комбинации Alt + SysRq + E, но посылает всем процессами (кроме init) сигнал SIGKILL. Сигналы SIGTERM и SIGKILL отличаются следующим: получив SIGTERM, программа должна сохранить данные (если, конечно, программист предусмотрел реакцию на этот сигнал) и завершить работу; сигнал SIGKILL моментально "убивает" программу - сохранить данные она уже не сможет.

Alt + SysRq + S (Sync)

Нажатие этой комбинации клавиш заставляет ядро выполнить синхронизацию буферов ввода/вывода, то есть сбросить содержимое дисковых буферов на диск. Очень полезная комбинация клавиш, помогающая сохранить ваши данные - ведь все мы знаем, что если вы сохранили данные в своей программе, это еще не означает, что они были физически записаны на диск. Синхронизация буферов - это процедура не мгновенная. После нажатия этой комбинации клавиш, вам нужно подождать, пока на консоли не появится сообщение:

Emergency Sync.... OK

Если же вывод на консоль невозможен, то просто подождите до 5 секунд. Будем надеяться, что система выполнила синхронизацию буферов (хотя, повторюсь, все зависит от "степени зависания").

Alt + SysRq + U (Umount)

Данная комбинация клавиш используется для размонтирования всех смонтированных файловых систем. Для размонтирования нужно больше времени, чем для синхронизации, поэтому ждать нужно минимум 5 секунд (а то и больше). Вообще ждать нужно до появления сообщения

Emergency Umounting… OK

Но если оно так и не появилось секунд через 5-10, то возможны два варианта:

Перед нажатием этой комбинации клавиш нужно нажать предыдущую (Alt + SysRq + S) для синхронизации буферов ввода/вывода. А только после этого размонтировать файловые системы. В общем, при зависании системы правильной будет следующая последовательность действий:

Alt + SysRq + B (reBoot)

Используется для мгновенной перезагрузки. До нажатия этой комбинации желательно нажать Alt + SysRq + S и Alt + SysRq + U (соответственно, подождать 2-5 и 5-10 секунд). Стоит отметить, что нажатие Alt + SysRq + B практически эквивалентно нажатию Reset.

Alt + SysRq + O (pOweroff)

Мгновенно выключает питание, не размонтируя файловые системы. Ясно, что до этого нужно воспользоваться комбинациями Alt + SysRq + S и Alt + SysRq + U.