Linux как закрыть зависшую программу

Вкратце: эта статья научит вас нескольким приемам, с помощью которых можно попытаться спасти или перезагрузить не отвечающую систему Linux.

Известно, что Linux очень стабилен, но даже самая стабильная система может столкнуться с ситуациями, которые приводят к тому, что система перестает отвечать на запросы. Затем возникает ужасное чувство, когда вы нажимаете и держите кнопку Power. В Linux есть несколько хитростей, которые можно попробовать в таком случае. На данный момент мы не стремимся сохранить вовремя несохраненную работу. Мы хотим найти способ избежать перезагрузки или, по крайней мере, обеспечить максимально мягкую перезагрузку, чтобы избежать повреждения системы.

Для целей этой статьи Linux можно рассматривать как набор из двух стеков: стек ядра и пользовательский стек. Где-то внутри пользовательского стека у вас работают программы. Скорее всего, X-сервер, менеджер окон и некоторые программы. Вы можете представить этот список программ, включая X-сервер, в виде другого стека внутри пользовательского стека. Эта концепция поможет новому пользователю Linux понять некоторые задачи, которые мы будем выполнять позже.

Зависла программа что делать

Способ 1 — Убить не отвечающую программу с помощью xkill

Если вы используете графический интерфейс Linux, вашим первым шагом должна быть попытка использовать функцию выполнения команд из графического интерфейса, например alt + f2 в Ubuntu и его производных.

наберите в появившейся строке xkill и навести курсор на окно зависшей программы и щелкнете на нем.

Xkill работает быстрее, чем традиционный значок X или щелчок правой кнопкой мыши по окну на панели задач и нажатие кнопки «Закрыть». Xkill убивает мгновенно без вопросов.

Способ 2 — Восстановление зависшей системы Linux с виртуальными консолями (TTY)

Иногда вам не повезет, система может показаться полностью мертвой.

Но это может быть просто иллюзией. Помните стек программ внутри пользовательского стека? Давайте немного поработаем с этим постулатом.

Хотя может показаться, что корнем пользовательского стека является X Window. Это не так.

X Window System работает на виртуальной консоли (VC), также называемой TTY. Консоли представлены в файловой системе как /dev/ttyX. Linux имеет несколько VC. Попытка получить доступ к другой консоли может помочь вернуть вам контроль над системой.

Вы можете переключиться на другой VC, нажав CTRL+ALT+F в среде графического интерфейса или ALT+F в другом VC. Вышеупомянутое нажатие клавиши дает вам доступ к VC 1-6. Графический интерфейс работает на VC 7 и выше (в зависимости от дистрибутива).

Читайте также:
Программа аску 1с инструкция обучение

При работе с нестабильной системой даже запрос на смену VC может занять некоторое время, поэтому будьте немного терпеливы.

Если ваша попытка изменить виртуальную консоль будет успешной, вам будет предложено ввести имя пользователя и пароль. После этого у вас будет консоль в текстовом режиме. Ваша система должна восстановить некоторую стабильность здесь, но только частично, потому что виртуальная консоль, на которой работает X и все остальное, больше не является приоритетом.

Как завершить зависшую программу, процесс в Linux Ubuntu.

После того, как вы вошли в систему, у вас есть варианты выхода из сложившейся ситуации.

Вы можете попытаться убить зависшую программу с помощью команд kill или killall.

Вы можете убить оконный менеджер, X-сервер или менеджер входа в систему. Это убьет все дочерние процессы, и, если все пойдет хорошо, то ваш менеджер входа в систему перезапустится, представив вам графический экран входа в систему.

Способ 3 — Когда все предыдущие терпит неудачу, работайте с Kernel, используя SysReq

Иногда даже переключение в TTY не работает. Вся система мертва. Не сдавайтесь, опять же, скорее всего это иллюзия. В Linux есть еще одна возможность для подобных ситуаций.

Этот способ полезен в ситуации, когда весь пользовательский стек мертв. Он известен как волшебная клавиша SysRq. Скомпилированный и включенный по умолчанию в большинстве дистрибутивов, только Kernel Panic должен быть в состоянии предотвратить это.

Чтобы убедиться, что опция была установлена во время компиляции ядра, вы можете попытаться найти файл конфигурации вашего текущего ядра в /boot. Ищите опцию CONFIG_MAGIC_SYSRQ. Как упоминалось ранее, он компилируется и включается в большинстве дистрибутивов. Чтобы подтвердить, что он включен, выполните следующее:

# sysctl kernel.sysrq

В старых системах у вас было 2 варианта: 0 и 1. Он был либо выключен, либо включен. На более новых есть более точный контроль над тем, какие команды включены.

Любое значение выше 1 означает, что включены только некоторые команды.

Чтобы временно установить другое значение, выполните следующую команду:

$ sudo sysctl -w kernel.sysrq=value

где value — значение параметра.

Чтобы навсегда изменить это значение, отредактируйте файл /etc/sysctl.conf. Найдите kernel.sysrq и установите желаемое значение.

################################################################### # Magic system request Key # 0=disable, 1=enable all, >1 bitmask of sysrq functions # See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html # for what other values do \ kernel.sysrq=1

Самый простой способ проверить, работает ли он, — попробовать. Я также рекомендую тестировать и изучать набор нажатий клавиш, пока система стабильна. Когда вы выполняете вызов SysRq, ядро попытается ответить.

Этот ответ можно увидеть, только если вы находитесь в виртуальной консоли с 1 по 6. Если фокус не может быть перемещен от X, вы не увидите ответы. Это не значит, что это не работает.

Читайте также:
Установка программ в fedora

Есть множество команд, которые можно отправить. Полный список можно посмотреть здесь. Я рекомендую запомнить следующее:

Alt + SysRq + R — перехватывает управление мышью и клавиатурой у Х-сервера, что полезно, если Х-сервер завис: так можно перейти в консоль, убить Х-сервер или проверить логи;

Alt + SysRq + E — послать сигнал завершения работы SIGTERM всем процессам, кроме init;

Alt + SysRq + I — послать сигнал немедленного завершения работы SIGKILL всем процессам, кроме init.

Alt + SysRq + K — убивает все процессы на текущей консоли. При этом графический сервер будет остановлен и невозможно будет увидеть ввод-вывод либо пока X-сервер не перезапустится, либо пока видеорежим не будет исправлен вручную;

Alt + SysRq + S — пытается синхронизировать все примонтированные файловые системы, при этом пишет в консоли «Emergency Sync». При успешном завершении выводится «Emergency Sync Complete»;

Alt + SysRq + U — пытается перемонтировать все примонтированные файловые системы в режим «только чтение»;

Alt + SysRq + B — выполняет немедленную перезагрузку системы аналогично кнопке RESET (без синхронизации и размонтирования файловых систем);

Alt + SysRq + O — корректно выключает систему (если настроено и поддерживается, обычно это прямая команда отключения).

Этот короткий список команд дает вам новый мощный инструмент для работы с нестабильной системой. При отправке запроса, если вы не видите ответы ядра, дайте несколько секунд между командами. Обратите внимание на LED-индикатор жесткого диска при обращение к жесткому диску.

Есть 2 последовательности, которые стоит запомнить.

1. Alt + SysRq + r e k

Эта последовательность хороша для перезапуска не отвечающего X-сервера. Сначала вы перехватываете управление мышью и клавиатурой у Х-сервера с помощью Alt + SysRq + r. Затем вы отправляете SIGTERM всем процессам с помощью Alt + SysRq + e. X-сервер может перезагрузиться с этим запросом. Если это так, вы спасли свою систему. Если нет, перейдите к третьему запросу, Alt + SysRq + k. Который отправит SIGKILL всем процессам в текущей виртуальной консоли.

Если ваша система по-прежнему не отвечает после указанной выше последовательности, вам следует перейти к следующей последовательности.

2. Alt + SysRq + r e i s u b

Последняя команда инициирует аварийную перезагрузку.

Источник: sysadmin78.ru

Убиваем зависшие приложения в Linux одним кликом мыши

Бывает, что приложения зависают и не реагируют на действия пользователей. Эта ситуация встречается и на Windows, и на MacOS, и на Linux. Пользователи оконной системы в таком случае нажимают привычное сочетание из клавиш Ctrl + Alt + Delete и при помощи менеджера процессов закрывают проблемную софтинку.

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

Что такое xkill?

xkill — это удобная командная утилита для дистрибутивов Linux, которая помогает пользователю завершить процесс любого приложения, которое может находиться в нерабочем состоянии. Эта утилита очень полезна, когда стандартные методы завершения приложений не работают, или когда пользователь не знает, как завершить процесс вручную.

Читайте также:
В какой программе лучше делать визуализацию интерьера

Установка xkill в Debian, Fedora и Archlinux

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

  • Debian: sudo apt-get install x11-utils
  • Fedora: sudo dnf install xorg-x11-utils
  • Archlinux: sudo pacman -S xorg-xkill

Использование xkill

Чтобы использовать xkill, вам нужно открыть терминал и ввести команду «xkill» без кавычек, а затем нажать клавишу Enter. После этого на экране появится курсор. Чтобы завершить процесс любого приложения, которое не работает, вам нужно щелкнуть на этом приложении курсором. Это приведет к завершению процесса, и приложение будет закрыто.

Источник: dzen.ru

Принудительно закрываем зависшую программу в linux

Иногда случается, что программа перестала реагировать на наши действия и даже закрываться не хочет и тогда нам приходиться лезть в системный монитор и принудительно убивать процесс. Лёгкий гуглинг не подсказал мне нечего хорошего и я решил накатать простенький скрипт на bash для закрытия зависших программ в одно нажатие.

Обычно в ubuntu если несколько раз быстро нажать на крестик зависшей программы, то система сама предложит убить процесс. Но я столкнулся с 2-мя случаями, когда это не помогает:

1. Апплет radio-tray. Иногда он перестаёт реагировать на большинство нажатий, включая кнопку выход. Но «О программе» открывает. Этого достаточно для скрипта.

2. 1 раз из 20 после выхода из teeworlds(я играю на втором x сервере) кроме черного экрана ничего не видно. Приходиться заходить в консоль (Cntrl+Alt+F1) и через htop убивать терминал с игрой.

Поэтому я и решил накатать простенький скрипт.

Для его работы нам понадобится установленный пакет xdotool. Он есть в репозиториях практически всех дистрибутивов, а значит установить его будет не проблема. Например в ubuntu это команда:

sudo apt-get install xdotool

Затем создаём файл для скрипта, желательно в специальной папке:

mkdir ~/bin
gedit ~/bin/kill

И вставляем следующий текст:

#!/bin/bash
gw=`xdotool getactivewindow`
gp=`xdotool getwindowpid $gw`
kill -9 $gp

Сохраняем и делаем файл исполняемым:

chmod +x ~/bin/kill

Осталось только привязать скрипт к клавише на клавиатуре.

Теперь достаточно нажать забитую клавишу и активное окно умрёт.

Похожие статьи:

  • Выполнение скрипта при запуске или выключении linux
  • Авто установка и смена ника в minecraft
  • Как поставить пароль на папку или файл в linux
  • Сохранение скриншота в jpg файл

Источник: tuksik.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru