Учитывая идентификаторы, созданные wmctrl -l
мной, я хотел бы иметь возможность убить процесс, связанный с идентификатором окна.
Как бы вы предложили это сделать?
command-line
bash
batch
wmctrl
user123456
источник
источник
Если вы используете
wmctrl -lp
PIDs находятся в третьем столбце.Для данного идентификатора окна вы можете использовать
(замените WID на ваш идентификатор окна)
источник
col3
.wmctrl
на самом деле есть еще один флаг-p
для перечисления PID.Как только вы это узнаете, это тривиальное упражнение по извлечению PID этого окна и передаче его
kill
источник
Вы также можете использовать
xkill -id [id]
. Xkill утилита работает иначе, чем другие ответы - вместо закрытия окна или убить процесс непосредственно, он указывает серверу X , чтобы отключить клиент , который создал окно. Обычно это приводит к завершению процесса даже для удаленного процесса.Преимущества и недостатки каждого подхода:
wmctrl -c
закрывает окно "изящно" - как будто вы нажали кнопку закрытия оконного менеджера самостоятельно. Это может не убить процесс и даже не закрыть окно, если приложение не хочет, чтобы окно было закрыто или было заморожено.Использование pid из
wmctrl -lp
withkill
гарантирует завершение процесса, но может потребовать дополнительной работы или вообще не работать, если процесс может выполняться на другом компьютере.xkill
может не завершить процесс, если он предназначен для восстановления после сбоя X-сервера или потери сетевого подключения, но большинство приложений просто аварийно завершают работу в этих условиях. В любом случае окна исчезнут. И удаленные, и локальные процессы обрабатываются одинаково.источник
использовать
xkill
. Просто введитеxkill
свой терминал и нажмите на нужное окно.источник