Как завершить процессы Linux/нереагирующие приложения с помощью команды ‘xkill’

Как мы можем уничтожить ресурс/процесс в Linux? Очевидно, что мы находим PID ресурса, а затем передаем PID команде kill.

Более точно, мы можем найти PID ресурса (например, терминал) следующим образом:

$ ps -A | grep -i terminal

6228 ?        00:00:00 gnome-terminal

В приведенном выше выводе число “6228” является PID процесса (gnome-terminal), используйте команду kill для его завершения, как показано ниже.

$ kill 6228

Команда kill отправляет сигнал процессу, PID которого передается вместе с командой.

В качестве альтернативы мы можем использовать команду pkill, которая завершает процесс на основе его имени и других атрибутов. Чтобы завершить процесс с именем terminal, нужно выполнить:

$ pkill terminal

Примечание: Длина имени процесса в pkill ограничена 15 символами.

pkill кажется более удобным, так как вы можете завершить процесс, не указывая его PID. Но если вы хотите иметь лучший контроль над системой, ничто не сравнится с командой “kill“. Используя kill, вы получите более полное представление о процессе, который вы завершаете.

Мы уже рассмотрели подробное руководство по командам kill, pkill и killall.

Для тех, кто работает с X сервером, есть еще один инструмент под названием xkill, который может завершить процесс из его X-окна, не указывая имя процесса или его PID.

Утилита xkill принуждает сервер X закрыть связь с клиентом, что приводит к завершению работы клиента посредством его X-ресурса. Утилита xkill, входящая в состав утилит X11, очень полезна для завершения ненужных окон.

Она поддерживает такие опции, как подключение к определенному серверу X (-display displayname) с использованием номера дисплея, когда на одном хосте одновременно работает несколько серверов X, и завершение работы всех клиентов (-all, не рекомендуется) с главными окнами на экране, а также учет рамки (-frame).

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

$ xlsclients
Пример вывода
'  ' /usr/lib/libreoffice/program/soffice
deb  gnome-shell
deb  Docky
deb  google-chrome-stable
deb  soffice
deb  gnome-settings-daemon
deb  gnome-terminal-server

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

$ xkill
Kill Process Using xkill

Важно отметить, что xkill не гарантирует успешное завершение/прерывание при закрытии связи. Большинство приложений будут завершены, когда их связь с сервером будет закрыта. Однако некоторые могут продолжать работать.

Следует упомянуть следующие моменты:

  1. Этот инструмент работает только при запущенном сервере X11, так как утилита xkill является частью утилит X11.
  2. Не путайте закрытие и завершение ресурса. Завершая ресурс, вы можете ожидать, что он завершится нечисто.
  3. Это не замена утилиты kill.
Нужно ли мне перейти на командную строку Linux, чтобы вызвать утилиту xkill?

Нет, вам не нужно запускать xkill из командной строки Linux. Вы можете установить сочетание клавиш и вызвать xkill, просто нажав одну и ту же комбинацию клавиш.

Вот как настроить сочетание клавиш в типичной среде рабочего стола gnome3.

Перейдите в Настройки -> Выберите клавиатуру, нажмите на ‘+’ и добавьте имя и команду. Нажмите на новую запись и нажмите клавишу, которую хотите использовать в качестве сочетания клавиш. Я использовал Ctrl+Alt+Shift+x.

Gnome Settings
Add Shortcut Key

В следующий раз, когда вы захотите уничтожить ресурс X, просто вызовите сочетание клавиш (Ctrl+Alt+Shift+x), и вы заметите, что указатель мыши изменился на x. Щелкните по ресурсу x, который вы хотите уничтожить, и все готово!

Source:
https://www.tecmint.com/kill-processes-unresponsive-programs-in-ubuntu/