Зависший Linux, что делать
Обновлено: 22.11.2024
Итак, у вас не отвечает система Linux? Вот несколько способов справиться с зависшей системой Linux.
Известно, что Linux очень стабилен, но даже самая стабильная система может столкнуться с ситуациями, из-за которых она перестает отвечать на запросы. Затем приходит ужасное чувство, когда вы нажимаете и удерживаете «Power». Есть несколько трюков с Linux, которые можно попробовать в таком случае. На данный момент мы не собираемся сохранять несохраненные работы. Мы хотим найти способ избежать перезагрузки или, по крайней мере, обеспечить максимально чистую перезагрузку, чтобы избежать повреждения.
Для целей этой статьи Linux можно рассматривать как набор из двух стеков: стека ядра и стека пользователя. Где-то внутри пользовательского стека у вас есть работающие программы. Скорее всего X-сервер, оконный менеджер и какие-то программы. Вы можете представить этот список программ, включая X-сервер, как еще один стек внутри пользовательского стека. Эта концепция поможет новым пользователям Linux понять некоторые задачи, которые мы будем выполнять позже.
1. Завершите не отвечающую программу с помощью xkill
Если вы используете рабочий стол Linux, вашим первым шагом должна быть попытка использовать функцию выполнения команды вашего оконного менеджера (alt+f2 в Ubuntu). Если вам повезет, он появится раньше, чем позже.
Затем вы можете выполнить xkill, навести курсор на несуществующее окно и щелкнуть его.
Xkill работает быстрее, чем традиционный значок X или щелчок правой кнопкой мыши по окну на панели задач и нажатие кнопки «Закрыть». Xkill убивает мгновенно, без вопросов.
2. Оживите зависшую систему Linux с помощью виртуальных консолей (TTY)
Иногда вам не так повезет, система может показаться полностью мертвой.
Это может быть просто иллюзией. Помните стек программ внутри пользовательского стека? Давайте немного поработаем с этим изображением.
Хотя может показаться, что корнем пользовательского стека будет X. Это не так.
Система X Window работает на виртуальной консоли (VC), также называемой TTY. Они представлены в файловой системе как /dev/ttyX. В Linux вам доступно несколько VC. Попытка получить доступ к другому может вернуть вам контроль.
Вы можете запросить другой виртуальный канал, нажав CTRL+ALT+F в среде с графическим интерфейсом или ALT+F в другом виртуальном канале. Приведенное выше нажатие клавиши дает вам доступ к VC 1–6. Графический интерфейс работает на VC 7+.
При работе с нестабильной системой даже запрос на изменение VC может занять некоторое время, так что проявите немного терпения.
Если ваша попытка изменить виртуальную консоль будет успешной, вам будет предложено ввести имя пользователя и пароль. После этого у вас будет консоль в текстовом режиме. Ваша система должна восстановить некоторую стабильность здесь, это отчасти потому, что виртуальная консоль, на которой работает X и все остальное, больше не является приоритетом.
После входа в систему у вас есть несколько вариантов.
- Вы можете попытаться завершить работу несуществующей программы с помощью команды kill или killall.
- Вы можете отключить диспетчер окон, X-сервер или диспетчер входа в систему. Это убьет все дочерние процессы, и, если все пойдет хорошо, ваш менеджер входа в систему перезапустится, представляя вам ваш графический экран входа в систему.
3. Когда ничего не помогает, поговорите с ядром, используя SysReq
Иногда даже переключение на телетайп не работает. Вся система мертва. Пока не сдавайтесь, еще раз, скорее всего, это иллюзия. В Linux есть еще одна функция для подобных ситуаций.
Если скомпилировать в ядре и включить в файле, Linux предоставляет вам средства для отправки предустановленных запросов непосредственно в ядро. Это полезно в ситуации, когда весь пользовательский стек мертв. Он известен как ключ Magic SysRq. Скомпилировано и включено по умолчанию в большинстве дистрибутивов, только Kernel Panic может предотвратить его работу.
Чтобы подтвердить, что параметр был установлен при компиляции ядра, вы можете попытаться найти файл конфигурации вашего текущего ядра в /boot. Найдите параметр CONFIG_MAGIC_SYSRQ. Как упоминалось ранее, он скомпилирован и включен в большинстве дистрибутивов. Чтобы убедиться, что он включен, выполните следующее:
В старых системах у вас было 2 варианта: 0 и 1. Это было либо ВЫКЛ, либо ВКЛ. В более новых есть более точный контроль над тем, какие команды включены.
Любое значение выше 1 означает, что некоторые команды включены. Более подробную информацию можно найти здесь.
Чтобы временно установить другое значение, выполните следующую команду:
Чтобы изменить это значение навсегда, отредактируйте /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 + o | Завершение работы система |
Этот краткий список команд дает вам новый мощный инструмент для работы с нестабильной системой. При отправке запроса, если вы не видите ответов ядра, дайте несколько секунд между командами. Обратите внимание на индикатор жесткого диска при запросе операции с жестким диском.
Есть две последовательности, которые стоит запомнить.
Эта последовательность удобна для перезапуска X-сервера, который не отвечает. Сначала вы выводите клавиатуру из необработанного режима с помощью Alt + SysRq + r. Затем вы запрашиваете отправку SIGTERM всем процессам с помощью Alt + SysRq + e. X-сервер может перезапуститься с этим запросом. Если это так, вы спасли свою систему. Если нет, перейдите к третьему запросу, Alt + SysRq + k. Это отправит сигнал SIGKILL всем процессам в текущей виртуальной консоли.
И SIGTERM, и SIGKILL используются для завершения процесса в Linux. Но вы должны предпочесть использовать SIGTERM. Вот почему!
Справочник по Linux Абхишек Пракаш
Если ваша система по-прежнему не отвечает после указанной выше последовательности, вам следует перейти к следующей последовательности.
Последняя команда инициирует аварийную перезагрузку.
Теперь у вас есть лучший из известных мне инструментов для борьбы с зависающей системой. Вы можете посмотреть это видео на моем канале YouTube для демонстрации.
Надеюсь, из этой статьи вы узнали что-то новое о работе с зависшей системой Linux. Я хотел бы знать ваши отзывы о нем. Пожалуйста, используйте раздел комментариев и поделитесь своими мыслями.
Когда рабочий стол Windows зависает, я обновляю его , или, если я использую программу, я использую комбинацию клавиш alt + F4 для выхода из программы, или я могу использовать ctrl + alt + delete, и эта команда позволит мне исправить рабочий стол Windows, увидев, что программа не отвечает и т.д.
Mint зависает реже, чем мой XP, но когда это происходит, я не знаю, что делать, я просто выключаю компьютер и перезагружаю его.
Итак, есть ли команда для исправления Linux, когда он зависает?
9 ответов 9
Если ничего не помогает, вы поднимаете слона. По сути, существуют специальные последовательности клавиш Magic SysRq ( Alt + SysRq + ? ), которые ядро Linux обрабатывает особым образом.
Если ваш Linux-компьютер зависает и просто не поддается никаким другим клавишам-командам, вам обязательно следует попробовать одну конкретную последовательность клавиш перед полной перезагрузкой.
Последовательность клавиш обычно запоминается с помощью мнемоники:
Разводить слонов — это ужасно скучно
- Alt + SysRq + R переключает клавиатуру в "сырой" режим
- Alt + SysRq + E отправляет сигнал SIGTERM (завершение) всем процессам, кроме материнского init
- Alt + SysRq + я посылаю сигнал SIGKILL всем процессам, чуть более агрессивно
- Alt + SysRq + S синхронизирует все файловые системы для предотвращения потери данных.
- Alt + SysRq + U перемонтирует файловые системы как доступные только для чтения
- Alt + SysRq + B принудительно перезагрузить
Проблема: на некоторых современных клавиатурах нет клавиши SysRq. (тот, который я сейчас печатаю, например, не имеет, хотя у него есть «экран печати», «блокировка прокрутки» и «пауза / перерыв»)
Вы можете попробовать Ctrl + Alt + *, чтобы убить передний процесс (программы блокировки экрана в Xorg 1.11) или Ctrl + Alt + F1, чтобы открыть терминал, запустить команду, такую как ps , top или htop, чтобы увидеть запущенные процессы и запустить kill, если процесс не отвечает.
Примечание: если он не установлен, установите htop с помощью sudo apt-get install htop .
Кроме того, когда вы сделаете это в виртуальной консоли Ctrl + Alt + F1, вернитесь на рабочий стол, нажав Ctrl + Alt + F7.
Для пользователей Windows и новичков в Linux я бы рекомендовал установить htop вместо top, так как с ним проще работать.
Разве процесс уничтожения переднего плана не выполнялся при нажатии комбинации клавиш указателя Ctrl + Alt + Esc или это изменилось? (И почему мои ключевые кнопки не отображают правильное форматирование?)
Какая звездочка должна использоваться для сочетания клавиш Ctrl+Alt+*? Тот, что на цифровой клавиатуре или в буквенном блоке? В последнем случае, что мне нажимать на неамериканских клавиатурах?
Должна работать только звездочка на цифровой клавиатуре, @user149408. Связанная ветка в списке рассылки oss-sec предполагает это.
В большинстве дистрибутивов нажатие Ctrl + Alt + Backspace отключает (графический) интерфейс X11 и перезапускает его. К сожалению, некоторые недавние, предположительно «дружественные» дистрибутивы деактивировали этот очень полезный ярлык по какой-то непостижимой причине. Я не знаю, настолько ли Mint удобен для пользователя, но вы ничего не потеряете, попробовав его :)
Убедитесь, что это включено в Mint, выполнив поиск «Запуск приложений» в меню, а затем убедитесь, что установлен флажок «Ctrl Alt Backspace».
AFAIRK, более новые модные драйверы ввода xorg evdev по умолчанию отключают «загрузку». Однако есть способ повторно включить их при запуске в файле /etc/xorg.conf или /etc/xorg.conf.d/XX-somefile или установить его в сценарии запуска xorg для каждого пользователя (можно указать setxkbmap -option "terminate :ctrl_alt_bksp" в ~/.xinitrc), добавив строку Option "XKbOptions" "terminate:ctrl_alt_bksp" в соответствующий раздел "InputClass" или установив для этого другой переключатель в вашей ОС.
В Fedora [установите] откройте gnome-tweaks и проверьте «последовательность клавиш для уничтожения Xserver» в разделе мыши/клавиатуры
Кроме того, что уже было упомянуто, я также использую следующие приемы:
Если по какой-то причине не отвечающая программа была запущена в терминале, я бы попробовал Ctrl + D или Ctrl + C . Если ничего не произойдет, я бы попробовал Ctrl + Z, а затем безжалостное убийство .
Если бы я знал ответственную программу, я бы открыл терминал и использовал killall . (например, killall firefox )
В качестве альтернативы, под Gnome, я бы запустил команду run и вызвал xkill , что позволяет вам убить программу, просто щелкнув окно, которым она владеет.
Наконец, на случай, если моя клавиатура расплавится, у меня есть апплет Системный монитор (также в Gnome), который при щелчке открывает окно gnome-system-monitor. Оттуда я могу убить любой процесс, которым я владею, используя только мышь.
Добавление еще одного возможного решения, и (помимо принятого ответа) одного из наименее разрушительных ответов на данный момент.
-
Используйте клавиатуру/мышь, чтобы A) запустить команду Ctrl + Alt + * выше, B) перейти к утилите, которую можно использовать для завершения программы-нарушителя, C) запустить терминал, чтобы инициировать pkill
-
Переключитесь на другую виртуальную консоль ( Ctrl + Alt + любая из F1-6 ), чтобы инициировать pkill
На ноутбуках вам может потребоваться нажать Ctrl Fn F1, чтобы открыть терминал. Я набираю reboot now, чтобы перезапустить терминал.
Чтобы вернуться к графическому интерфейсу из терминала на моем ноутбуке (HP G56), мне нужно нажать Ctrl Fn F8 (очевидно, это также может быть Ctrl Fn F7 ), и вы должны вернуться к графическому интерфейсу.
- shutdown -h now — выключить систему сейчас и не перезагружать
- halt — остановить все процессы — аналогично предыдущему
- shutdown -r 5 — выключить систему через 5 минут и перезагрузить
- shutdown -r now — немедленно завершить работу системы и перезагрузить ее.
- reboot — остановить все процессы, а затем перезагрузить — так же, как указано выше.
- startx — запустить систему X
Еще одно предложение, если вы используете Gnome3 (я думаю, что установка Mint по умолчанию использует что-то подобное), вы можете использовать CTRL + F2, затем нажать R и нажать клавишу возврата. Я часто использую это, и это работает. Это в основном перезапускает графический интерфейс. Даже если вы ничего не видите на экране (например, он завис), вы должны сделать это, и он перезапустит графический интерфейс.
возможно, это не работает в графическом интерфейсе Mint, поскольку графический интерфейс Mint по умолчанию не совсем Gnome, но в Gnome 3 он точно работает.
Это изменилось в GNOME3. Нажатие Alt+F2 откроет окно запуска, где вы можете ввести команду r . Это перезапуск gnome-shell, который в GNOME 3.x имел много утечек памяти, что со временем приводило к тому, что он становился все медленнее и медленнее. Выполнение этого перезапуска освободило большую часть этой оперативной памяти.
На моем ноутбуке, когда он полностью зависает (не отвечает мышь или клавиатура) на mint 17.3, я могу нажать Control + Alt + Fn + F7, затем Control + Alt + Fn + F2. Это попадает в оболочку, затем я вхожу в систему со своим именем пользователя и паролем. Чтобы вернуться на рабочий стол, я делаю chvt 8, это возвращает меня к моему текущему рабочему столу. Чтобы узнать тип активного tty, введите w, затем перейдите к текущему.
Таким образом, вы сможете возобновить работу, ничего не перезагружая и ничего не теряя.
Еще не упоминалось, но в некоторых случаях может сработать — попробуйте CTRL + ALT + СТРЕЛКА ВПРАВО или СТРЕЛКА ВЛЕВО . Это действительно переключало рабочие пространства, и это каким-то образом отключало все, что блокировало действия мыши и клавиатуры. Затем я мог вернуться к первому рабочему пространству, убить Chromium, который, как я тогда понял, завис и перехватывал все события клавиатуры и мыши. Теперь все вернулось в норму, без перезагрузки или потери чего-либо.
В моем случае всего несколько минут назад все зависало, кроме того, что мышь перемещала курсор, но мышь больше ничего не делала. PrtScn сделал всплывающее окно с сообщением, что я могу перетащить прямоугольник (но не могу) или нажать ESC (работает). Ничто другое не работало. Даже не перемещая курсор в другое окно, когда у меня фокус следует за мышью, изменяется подсветка рамки окна. Но Ctrl + Alt + F3 переключился на текстовый термин, Ctrl + Alt + F1 вернул сеанс X windows.
Виновником был Chromium. Я читал, переключал вкладки в одном окне браузера, и при нажатии на вкладку все зависало, кроме нескольких только что описанных вещей. Переключение рабочих мест
На этой странице описывается, как избежать проблем, когда программы работают неправильно. Самый распространенный способ — убить процесс — отдельную программу или одну из ее частей. Если вы завершите процесс, вы, вероятно, потеряете все несохраненные данные в этой программе и, возможно, из других программ, которые он породил или с которыми взаимодействует..
На этой странице также описано, что делать, если компьютер полностью завис.
Эти предложения имеют более неблагоприятные последствия, чем дальше вы продвигаетесь по списку. Например, удаление окна в KDE приведет к потере несохраненных данных в этой программе, тогда как нажатие кнопки сброса может повредить все данные на жестком диске (в крайних случаях). Не прибегайте к крайним мерам, если у вас нет другого выбора.
Содержание
На рабочем столе [ редактировать | изменить источник ]
В X-Window (общие) [ edit | изменить источник ]
Простым в использовании приложением по умолчанию для уничтожения зависших программ при использовании среды X является xkill. При выполнении курсор мыши изменится на значок черепа и скрещенных костей, а следующее окно, которое вы щелкнете, будет закрыто.
Иногда это можно сделать, нажав Control+Alt+Escape или вызвав диалоговое окно "Выполнить" с помощью ALT+F2 и введя "xkill", а затем RETURN.
В KDE [ редактировать | изменить источник ]
KDE System Guard (устанавливается по умолчанию) может использоваться для уничтожения проблемных процессов. Ctrl+Esc — это комбинация клавиш по умолчанию для его запуска или запуска ksysguard.
В GNOME [ редактировать | изменить источник ]
Программа с графическим интерфейсом gnome-system-monitor — это один из способов просмотра активных процессов, завершения процессов, а также их уничтожения. Существует также виджет «Принудительный выход», который можно добавить на панель, повторяющую функцию xkill.
Убийство на консоли [ редактировать | изменить источник ]
Самый простой способ остановить программу, работающую на используемом вами терминале, — это нажать Ctrl+C, что попросит программу остановиться (отправит сигнал SIGINT), но программа может это проигнорировать. Ctrl+C также работает в таких программах, как XTerm или Konsole. См. также Alt+SysRq+K ниже.
Кроме того, существует несколько команд для уничтожения процессов из любого окна терминала, а не только из того, в котором запущена программа. Вы можете использовать такую программу, как XTerm или Konsole, чтобы предоставить поддельный терминал, или вы можете переключиться на терминал, нажав Ctrl + Alt + функциональная клавиша; т.е. Ctrl+Alt+F2 до Ctrl+Alt+F6 (в зависимости от вашей системы). Ctrl+Alt+F7 возвращает вас на рабочий стол (опять же, в зависимости от вашей системы).
На странице «Руководство по UNIX/Команды/Управление процессами» содержится дополнительная информация о командах управления процессами, но некоторые популярные из них приведены ниже:
- pkill и killall — самые полезные команды для уничтожения программ, и они делают похожие вещи. Просто введите
Принудительный выход из системы X Window [ edit | изменить источник ]
- Чтобы закрыть и перезапустить систему X Window, нажмите Ctrl+Alt+Backspace. Многим программам требуется X-Window, поэтому его использование приведет к закрытию или сбою большинства запущенных программ.
- После этого вам, вероятно, следует попытаться перезагрузить компьютер: введите
- Если у вас есть доступ к командной строке, вы также можете ввести
- Обратите внимание, что возможность перезапуска X нажатием Ctrl+Alt+Backspace может быть отключена в файле конфигурации X. В реализации X.Org для этого можно добавить параметр «DontZap» в xorg.conf. Если Ctrl+Alt+Backspace не работает, это может быть причиной.
Если вы нажмете Ctrl+Alt+Backspace и у вас включен менеджер входа в систему, такой как XDM, обычно вы вернетесь к нему после x RESTARTS. Если вы запустили X, набрав startx, это обычно возвращает вас к командной строке
Ctrl+Alt+Backspace также полезен, например, для перезапуска X после изменения разрешения.
Alt+SysRq [ редактировать | изменить источник ]
Если ничего не помогает, вы все равно сможете связаться с ядром.
Для использования просто нажмите клавиши Alt и SysRq (PrintScreen) и одну из клавиш, перечисленных ниже, все вместе. Попробуйте переключиться в окно терминала, если это возможно, сначала нажав Ctrl+Alt+F2 (используйте Ctrl+Alt+F7 для возврата на рабочий стол).
Если ваш компьютер не отвечает, вы можете выполнить следующие шаги, чтобы выполнить перезагрузку с меньшей вероятностью поиска ваших файлов. Это рекомендуемый метод:
- Нажмите Ctrl+Alt+F2, чтобы переключиться в окно терминала. Иногда это невозможно.
- Нажмите Alt + SysRq + R, чтобы открыть клавиатуру.
- Если ранее не удалось нажать Ctrl+Alt+F2, повторите попытку сейчас.
- Нажмите Alt+SysRq+E, чтобы обозначить все процессы.
- Нажмите Alt+SysRq+I, чтобы закрыть все процессы.
- Нажмите Alt+SysRq+S, чтобы синхронизировать диски.
- Дождитесь сообщения "ОК" или "Готово". Если вы не видите сообщения, посмотрите на индикатор жесткого диска, чтобы узнать, повлияла ли синхронизация.
- Нажмите Alt+SysRq+U, чтобы размонтировать все диски.
- Дождитесь сообщения "ОК" или "Готово". Если через 15–30 секунд сообщение не появится, предположим, что диски размонтированы (или размонтирование невозможно), и продолжайте.
- Нажмите Alt+SysRq+B для перезагрузки.
Буквы, использованные для написания REISUB — используйте мнемонику Перезагрузить, даже если система полностью сломана. Еще одна популярная фраза – Разводить слонов очень скучно, или просто произнесите слово BUSIER наоборот.
Полный список доступных команд показан ниже. Он в основном взят из Documentation/sysrq.txt в исходниках ядра Linux.
Alt+SysRq+ | Действие | Использует |
R | UnRaw | Выключает режим Raw клавиатуры. Это позволяет вводить данные с клавиатуры даже в случае сбоя X-Window. |
K | SAK - Убить все на консоли | Ключ безопасного доступа - Убить все программы на текущей виртуальной консоли. Это полезно, если вы хотите убедиться, что на консоли нет программ, ожидающих получения вашего пароля, или если процесс не позволяет вам переключаться между консолями. |
S | Sync | Попытка синхронизировать все файловые системы. Это снижает вероятность потери данных и фскинга. Синхронизация завершена, когда напечатано "Готово" или "ОК". |
U | Umount | Попытки перемонтировать все файловые системы как доступные только для чтения. Размонтирование завершается, когда печатается "done" или "OK". |
B | Reboot | Немедленная перезагрузка без синхронизации или размонтирования каких-либо дисков. Прежде чем использовать это, используйте Alt+SysRq+S и Alt+SysRq+U, чтобы избежать потери данных. |
C | < td valign="top">CrashdumpВыполняет перезагрузку kexec для создания аварийного дампа. Прежде чем использовать это, используйте Alt+SysRq+S и Alt+SysRq+U, чтобы избежать потери данных. | |
O | < td valign="top">Выключение питанияВыключает компьютер без синхронизации или размонтирования дисков. Прежде чем использовать это, используйте Alt+SysRq+S и Alt+SysRq+U, чтобы избежать потери данных. | |
P | < td valign="top">Show PcПопытки вывести все регистры и указатели на консоль. | |
T | Показать задачи | Попытка вывести список всех задач на консоль. |
M | Показать информацию о памяти | Отображает информацию о памяти на консоль |
V | Информация о процессоре Voyager | Выводит информацию о процессоре Voyager SMP на вашу консоль. | 0-8 | Подробность ошибок ядра | Установите уровень журнала консоли для сообщений ядра. При значении 0 отображаются только такие сообщения, как PANIC и OOPS |
F | OOM Kill< /td> | Вызывает oom_kill для уничтожения процесса, потребляющего память |
E | Term | Отправляет сигнал SIGTERM всем процессам. |
I | Kill | Уничтожает (отправляет сигнал SIGKILL) все процессы. |
L | Kill + Kill Init | Убивает (отправляет сигнал SIGKILL) все процессы, включая init. После этого вы больше ничего не сможете делать! |
N | Приятный | Сделайте процессы реального времени приятными. |
H | Справка | Выводит справку |
Определенные системы (системы, администрируемые отделом или группой, отличной от вас, напримеркорпоративное или государственное учреждение) могут лишить возможности использовать комбинации клавиш SysRq, чтобы защитить свою систему от команд низкого уровня. Если вы попробуете выполнить несколько команд и заметите, что ничего не происходит или появляются сообщения об ошибках, возможно, дело в этом.
Большая красная кнопка [ редактировать | изменить источник ]
Последний вариант — это, конечно же, кнопка питания на внешней стороне вашего компьютера. Современные ПК имеют кнопки ACPI, которые просто отправляют ядру запрос на выключение. Если демон ACPI прослушивается и правильно настроен, он может подать сигнал об инициализации и выполнить полное завершение работы.
Если ACPI не работает, необходимо отключить электропитание. Это делается с помощью «жесткого переключателя» (обычно обозначаемого «сброс»), возможно, с помощью той же кнопки, что и раньше, но удерживая ее нажатой в течение 5 или около того секунд. Извлечение аккумулятора (на ноутбуках) и физическое отключение всех кабелей питания — это, конечно, единственный гарантированно работающий метод. (Убедитесь, что никакие другие методы, перечисленные выше, не работают. Даже в крайнем случае не рекомендуется отключать компьютер от сети во время его работы.)
Сброс без выключения может вызвать проблемы с файловой системой. Чтобы попытаться решить эту проблему, при следующей загрузке будет запущена fsck, а журналируемые файловые системы попытаются завершить или откатить файлы, которые изменялись.
Время от времени ваша операционная система может зависать или зависать, когда вы запускаете слишком много ресурсоемких приложений.
Конечно, иногда вы можете даже не запускать тяжелое программное обеспечение, но из-за того, что два приложения пытаются получить доступ к одному системному ресурсу, вы можете зайти в тупик.
К сожалению, системы Linux также не избавлены от зависания/зависания GUI (графического пользовательского интерфейса).
СОВЕТ. Знаете ли вы, что самые ранние компьютерные ОС могли одновременно запускать только одну программу? К счастью для нас сегодня, большинство операционных систем поддерживают многозадачность.
Поэтому, когда мы говорим о зависании графического интерфейса, мы в основном фокусируемся на следующих моментах:
- Одна программа перестает отвечать (скажем, браузер) , и вы не можете закрыть окно. В этом случае вы, скорее всего, увидите уведомление "Браузер не отвечает".
- Весь графический интерфейс зависает, и система не реагирует на события мыши или клавиатуры. Это легко заметить, если у вас в фоновом режиме играла музыка, которая внезапно остановилась.
- Фоновые процессы все еще работают (например, музыка все еще играет), но система не реагирует на щелчки мыши, а курсор даже не двигается.
Помимо работы тяжелого программного обеспечения и взаимоблокировок, зависание графического интерфейса в Linux также может быть вызвано проблемами с драйверами, неправильной настройкой оборудования, чрезмерным нагревом, нехваткой памяти (ОЗУ), настройками BIOS (например, разгоном), проблемами с питанием, внешними устройствами или даже неисправный жесткий диск.
Кроме того, устаревшие пакеты также могут привести к зависанию системы. Всегда проверяйте актуальность вашей системы, выполняя следующие команды:
Содержание
Что делать, если графический интерфейс Linux зависает?
Прежде чем отключать источник питания или принудительно выключать систему Linux, ниже приведены некоторые способы восстановления зависшего графического интерфейса и предотвращения потери несохраненных данных.
Способ 1. Запустите команду X-Kill и завершите работу зависших приложений
Если вы столкнулись с ситуацией, когда зависает только одно приложение, а система по-прежнему реагирует на щелчки мыши, это один из лучших способов убить/остановить его. Есть два способа запуска команды X-Kill.
Во-первых, нажмите комбинацию клавиш Alt + F2. Вы увидите всплывающее окно, и вы можете ввести команду, которую хотите запустить.
Введите команду xkill и нажмите Enter.
Нажмите Alt+F2 и запустите xkill
Вы увидите, что курсор изменится на знак X. Просто наведите курсор на зависшее приложение и нажмите. Приложение закроется мгновенно или через несколько секунд.
После запуска xkill курсор меняется на знак X
Еще один способ запустить команду xkill — через Терминал. Поэтому, если у вас все еще есть доступ к вашему терминалу, выполните команду xkill .
Вы увидите, что курсор изменится на знак X, и вы можете щелкнуть любое приложение, чтобы закрыть его.
Способ 2: завершение процессов из терминала
Еще один способ выхода из зависшего графического интерфейса — использование терминала. В этом методе у вас должен быть запущен терминал или иметь возможность запускать его и отправлять события клавиатуры.
Если в Терминале запущен процесс замораживания, просто используйте комбинацию клавиш Ctrl + C, чтобы завершить его.
Если программа не запускалась из терминала, мы все равно могли бы убить ее, получив ее PID из терминала. Некоторые из инструментов, которые мы можем использовать, это TOP (поставляется с предустановленной программой) и HTOP. Если у вас не установлен htop, используйте top. Запустите Терминал (Ctrl + Alt + T), введите top и нажмите Enter.
Вы увидите в режиме реального времени все процессы, запущенные в вашей системе.
Просмотр процессов в режиме реального времени после запуска top в терминале
На изображении выше мы видим все запущенные программы. Мы хотим убить процесс VLC с PID 44320 .
Это легко сделать, выполнив следующую команду:
Приложение будет немедленно закрыто.
Способ 3. Переключитесь на консоль (виртуальный терминал) и отключите зависающие приложения
В этом методе используется одна простая логика: «Если ваш графический интерфейс зависает — переключитесь в режим консоли, там нет графического интерфейса». Когда вы находитесь в режиме консоли (также называемом виртуальным терминалом), вы можете легко отключить зависающие приложения или любые ресурсоемкие приложения, которые, как вы подозреваете, могут быть причиной зависания.
Чтобы переключиться в режим консоли, просто используйте комбинацию клавиш (Ctrl + Alt + F3). Через несколько секунд или сразу вы увидите, что ваш графический интерфейс исчезнет, и вы перейдете к консоли, как показано на изображении ниже.
Вам потребуется войти в систему. Если у вас в фоновом режиме играла музыка, она не будет воспроизводиться в режиме консоли.
Находясь в режиме консоли, вы можете использовать TOP или HTOP для просмотра всех запущенных процессов и получения их PID. Мы будем использовать HTOP, так как он у меня уже установлен. В отличие от TOP, HTOP имеет дополнительные функции, такие как:
- Использует разные цвета, чтобы различать уровни приоритета между процессами.
- Позволяет пользователям выбирать процесс, просто нажимая на него.
- Пролистайте (вверх и вниз), чтобы просмотреть запущенный процесс
- Искать, уничтожать, сортировать с помощью функциональных клавиш
Выбрав программу заморозки, нажмите F9, чтобы закрыть ее.
Вы можете вернуться в режим графического интерфейса, используя комбинацию клавиш (Ctrl + Alt + F2).
Примечание. Комбинация клавиш для переключения в режим консоли и обратно в графический интерфейс может немного отличаться (F [число]) в разных системах Linux. Однако большинство из них находятся в диапазоне от F1 до F3.
Способ 4. Удаленный вход через SSH и удаление зависающих приложений
Это еще один надежный метод, но он требует, чтобы в вашей системе была запущена служба SSH. Это похоже на метод 3 и метод 4, только в этом сценарии мы будем делать это с удаленного компьютера, подключенного к той же сети, что и ваш зависающий компьютер. Пользователи Linux могут использовать Терминал, а пользователям Windows потребуется загрузить такой инструмент, как Putty.
В этом посте мы получим доступ к нашему компьютеру Freezing с другого компьютера с Linux. Ниже приведена команда SSH, которую я буду использовать для создания сеанса. Мне потребуется ввести пароль пользователя.
После запуска сеанса SSH вы можете запускать такие команды, как TOP, чтобы увидеть запущенные процессы в вашей зависшей системе. Оттуда вы можете получить PID вашего целевого процесса и убить его.
Из образа мы убьём процесс — skypeforlinux с PID 2374. Я выполню команду ниже:
Метод 5. Используйте последовательности клавиш Magic SysRq
Если все вышеперечисленные методы не помогли — пришло время "Поднять слона!" Системы Linux поддерживают специальную последовательность клавиш Magic SysRq, которая позволяет отправлять низкоуровневые команды ядру Linux. Я называю это окончательным методом, поскольку он предназначен для помощи в таких ситуациях.
Примечание. В настоящее время на большинстве клавиатур нет клавиши SysRq.Тем не менее, вы можете найти его на кнопке Prnt-Scrn или Home, но это может отличаться от одной марки ПК к другой.
Последовательность клавиш Magic SysRq широко известна благодаря мнемонике: «Выращивание слонов — это ужасно скучно» или «Перезагрузка, даже если система полностью сломана» (R-E-I-S-U-B).
- Alt + SysRq + R: переключение клавиатуры в режим Raw.
- Alt + SysRq + E: завершить все процессы, кроме исходного, отправив сигнал SIGTERM.
- Alt + SysRq + I: завершить все процессы с помощью команды SIGKILL.
- Alt + SysRq + S: чтобы предотвратить потерю данных, используйте эту последовательность для синхронизации файловых систем.
- Alt + SysRq + U: размонтировать и смонтировать файловые системы только для чтения.
- Alt + SysRq + B: принудительно перезагрузить систему.
При выполнении в правильном порядке (REISUB) этот метод работает как шарм. Если только аппаратное обеспечение полностью не заблокировано, а ядро полностью не перегружено. Помимо последовательности REISUB, вы можете ознакомиться с другими комбинациями SysRq в руководстве Linux SysRq .
Заключение
Полагаю, из этого поста вы узнали пять методов, которые можно использовать для сохранения замораживающего графического интерфейса. Если зависание графического интерфейса — это проблема, с которой вы время от времени сталкиваетесь на своем ПК с Linux, я думаю, вам следует глубже изучить причину. Недостаточно ли оперативной памяти (памяти)? Ваша система использует устаревшие пакеты?
Вы можете перейти на более легкий дистрибутив или среду рабочего стола, например XFCE. Иногда вам также нужно внимательно изучить программное обеспечение, которое вы используете.
Например, при использовании Visual Studio Code для моего проекта React JS мой графический интерфейс зависает, поскольку VS-Code всегда синхронизирует папку модулей моего узла. Исключение папок node-modules в настройках синхронизации решило эту проблему.
Не стесняйтесь поделиться с нашими читателями другими методами восстановления после зависания графического интерфейса.
Читайте также: