Вкратце: эта статья научит вас нескольким приемам, чтобы попытаться спасти или перезагрузить не отвечающую систему Linux.
Известно, что Linux очень стабилен, но даже самая стабильная система может столкнуться с ситуациями, которые приводят к тому, что она перестает отвечать на запросы. Затем возникает ужасное чувство, когда вы нажимаете и держите «Power». В Linux есть несколько хитростей, которые можно попробовать в таком случае. На данный момент мы не стремимся сохранить несохраненную работу. Мы хотим найти способ избежать перезагрузку системы или, по крайней мере, обеспечьте максимально возможную перезагрузку, чтобы избежать повреждения.
Для целей этой статьи Linux можно рассматривать как набор из двух стеков: стек ядра и пользовательский стек. Где-то внутри пользовательского стека у вас работают программы. Скорее всего, X-сервер, менеджер окон и некоторые программы. Вы можете представить этот список программ, включая X-сервер, в виде другого стека внутри пользовательского стека. Эта концепция поможет новому пользователю Linux понять некоторые задачи, которые мы будем выполнять позже.
Если вы используете рабочий стол Linux, вашим первым шагом должна быть попытка использовать команду менеджера окон, команда (alt + f2
в Ubuntu). Если вам повезет, он появится раньше, чем позже.
Тогда вы можете выполнить Xkill и наведите курсор на не существующее окно и щелкните по нему.
Xkill работает быстрее, чем традиционный значок X или щелчок правой кнопкой мыши по окну на панели задач и нажатие кнопки «Закрыть». Команда Xkill убивает мгновенно без вопросов.
Иногда вам не повезет, система может показаться полностью мертвой.
Это может быть просто иллюзией. Помните стек программ внутри пользовательского стека? Давайте поработаем с этим изображением немного.
Хотя может показаться, что корнем пользовательского стека будет X. Это не так.
X Window System работает на виртуальной консоли (VC), также называемой TTY. Они представлены в файловой системе как /dev/ttyX
. Linux имеет несколько VC для вас. Попытка получить доступ к другому может вернуть вам контроль.
Вы можете запросить другой VC, нажав CTRL + ALT + F {1,6}
в среде графического интерфейса или ALT + F {1,6}
в другом VC. Вышеупомянутое нажатие клавиши дает вам доступ к VC 1-6. Графический интерфейс работает на VC 7+.
При работе с нестабильной системой даже запрос на смену VC может занять некоторое время, поэтому будьте немного терпеливы.
Если ваша попытка изменить виртуальную консоль будет успешной, вам будет предложено ввести имя пользователя и пароль. После этого у вас будет консоль в текстовом режиме. Ваша система должна восстановить некоторую стабильность здесь, это по частям, потому что виртуальная консоль, на которой работает X и все остальное, больше не является приоритетом.
После того, как вы вошли в систему, у вас есть несколько вариантов.
Иногда даже переключение на TTY не работает. Вся система мертва. Не сдавайтесь еще раз, скорее всего, иллюзия. В Linux есть еще одна особенность для подобных ситуаций.
Если скомпилировано в ядре и включено в файл, Linux предоставляет вам средства для отправки предустановленных запросов непосредственно в ядро. Это полезно в ситуации, когда весь пользовательский стек мертв. Он известен как магический ключ magic SysRq. Скомпилированный и включенный по умолчанию в большинстве дистрибутивов, только Kernel Panic должен быть в состоянии предотвратить это.
Чтобы убедиться, что опция была установлена во время компиляции ядра, вы можете попытаться найти файл конфигурации вашего текущего ядра в /boot. Ищите опцию CONFIG_MAGIC_SYSRQ
. Как упоминалось ранее, он компилируется и включается в большинстве дистрибутивов. Чтобы подтвердить, что он включен, выполните следующее:
sysctl kernel.sysrq
В старых системах у вас было 2 варианта: 0 и 1. Он был либо выключен, либо включен. На более новых есть более точный контроль над тем, какие команды включены.
Любое значение выше 1 означает, что некоторые команды включены.
Чтобы временно установить другое значение, выполните следующую команду:
sudo sysctl -w kernel.sysrq=value
Чтобы навсегда изменить это значение, отредактируйте файл /etc/sysctl.conf . Найдите kernel.sysrq и установите желаемое значение.
Самый простой способ проверить, работает ли он, – попробовать. Мы также рекомендуем тестировать и изучать набор нажатий клавиш, пока система стабильна. Когда вы выполняете вызов SysRq, ядро попытается ответить. Этот ответ можно увидеть, только если вы находитесь в виртуальной консоли с 1 по 6. Если фокус не может быть перемещен от X, вы не увидите ответы. Это не значит, что это не работает.
Есть множество команд, которые можно отправить. Полный список можно посмотреть здесь . Мы рекомендуем запомнить следующее:
Alt + SysRq + r | Выводит клавиатуру из необработанного режима, отнимая управление у X |
Alt + SysRq + e | Посылайте SigTerm всем процессам, давая им шанс выйти изящно |
Alt + SysRq + i | Отправить SigKill на весь процесс |
Alt + SysRq + k | Убить весь процесс в текущей виртуальной консоли |
Alt + SysRq + s | Синхронизировать все смонтированные файловые системы, сбрасывая все данные на диск |
Alt + SysRq + u | Перемонтировать все файловые системы только для чтения |
Alt + SysRq + b | Перезагрузка системы мгновенно, не синхронизируется и не отключается |
Alt + SysRq + o | Система отключения |
Этот короткий список команд дает вам новый мощный инструмент для работы с нестабильной системой. При отправке запроса, если вы не можете увидеть ответы ядра, дайте несколько секунд между командами. Обратите внимание на свет жесткого диска при запросе работы жесткого диска.
Есть 2 последовательности, которые стоит запомнить.
Alt + SysRq + r e k
Эта последовательность хороша для перезапуска не отвечающего X-сервера. Сначала вы выводите клавиатуру из необработанного режима с помощью Alt + SysRq + r
. Затем вы запрашиваете отправку SIGTERM всем процессам с помощью Alt + SysRq + e
. X-сервер может перезагрузиться с этим запросом. Если это так, вы спасли свою систему. Если нет, перейдите к третьему запросу, Alt + SysRq + k
. Который будет отправлять SIGKILL всем процессам в текущей виртуальной консоли.
Если ваша система по-прежнему не отвечает после указанной выше последовательности, вам следует перейти к следующей последовательности.
Alt + SysRq + r e i s u b
Эта последняя команда инициирует аварийную перезагрузку.
Мы надеемся, что вы узнали что-то новое о работе с замороженной системой Linux в этой статье. Пожалуйста, используйте раздел комментариев и поделитесь своими мыслями.