Учитывая идентификаторы, произведенные wmctrl -l
, Я хотел бы смочь уничтожить процесс, связанный с окном ID.
Как Вы предложили бы сделать это?'
Помимо списка PID, как описано в других ответах Florian Diesch и Serg, можно использовать -ic
опция закрыть окно непосредственно:
$ wmctrl -ic 0x02e00085
wmctrl
фактически имеет другой флаг -p
для перечисления PID.
bash-4.3$ wmctrl -lp
0x0380000a 0 4410 eagle Desktop
0x04800006 0 4275 eagle XdndCollectionWindowImp
0x04800009 0 4275 eagle unity-launcher
0x0480000c 0 4275 eagle unity-panel
0x0480000f 0 4275 eagle unity-dash
0x04800010 0 4275 eagle Hud
Как только вы это знаете, это тривиальное упражнение по извлечению PID этого окна и передаче его в kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
Если Вы используете wmctrl -lp
, PIDs находятся в третьем столбце.
Для данного окна ID можно использовать
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(замените WID окном ID)
используйте xkill
. Просто тип xkill
в Вашем терминале и нажимает на необходимое окно.
xkill
Можно также использовать xkill -id [id]
. xkill утилита работает по-другому по сравнению с другими ответами - вместо того, чтобы закрыть окно или уничтожить процесс непосредственно, это дает X-серверу команду разъединять клиент, который создал окно. Это обычно имеет эффект того, чтобы заставлять процесс завершиться даже для удаленного процесса.
Преимущества и недостатки к каждому подходу:
wmctrl -c
закрывает окно "корректно" - как будто Вы нажали близкую кнопку менеджера окон сами. Это не может уничтожить процесс, и он даже не может закрыть окно, если приложение не хочет, чтобы окно было закрыто или замораживается.
Используя pid от wmctrl -lp
с kill
как гарантируют, уничтожит процесс, но может потребовать дополнительной работы или не работать вообще, если процесс может работать на другой машине.
xkill
может не завершить процесс, если он разработан, чтобы смочь восстановиться с катастрофического отказа X-сервера или потери сетевого соединения, но большинство приложений просто откажет при этих обстоятельствах. В любом случае окна закончатся. И удаленные процессы и локальные обрабатываются тождественно.