Dadas las ID producidas por wmctrl -l
, me gustaría poder matar el proceso vinculado a la ID de la ventana.
¿Cómo sugerirías hacerlo?
Dadas las ID producidas por wmctrl -l
, me gustaría poder matar el proceso vinculado a la ID de la ventana.
¿Cómo sugerirías hacerlo?
Respuestas:
Además de enumerar el PID como se describe en otras respuestas de Florian Diesch y Serg, puede usar la -ic
opción para cerrar la ventana directamente:
$ wmctrl -ic 0x02e00085
Si usa wmctrl -lp
los PID, están en la tercera columna.
Para una ID de ventana determinada, puede usar
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(reemplace WID con su ID de ventana)
col3
.
wmctrl
en realidad tiene otra bandera -p
para listar 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
Una vez que sepa esto, es un ejercicio trivial de extraer el PID de esa ventana y pasarlo a kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
También puedes usar xkill -id [id]
. La utilidad xkill funciona de manera diferente a las otras respuestas: en lugar de cerrar la ventana o eliminar el proceso directamente, le indica al servidor X que desconecte al cliente que creó la ventana. Esto normalmente tiene el efecto de hacer que el proceso finalice incluso para un proceso remoto.
Ventajas y desventajas de cada enfoque:
wmctrl -c
cierra una ventana "con gracia", como si usted mismo hubiera hecho clic en el botón Cerrar del administrador de ventanas. Esto puede no matar el proceso, y puede que ni siquiera cierre la ventana, si la aplicación no quiere que la ventana se cierre o se congele.
El uso de pid from wmctrl -lp
with kill
está garantizado para matar el proceso, pero puede requerir trabajo adicional o no funcionar en absoluto si el proceso puede ejecutarse en una máquina diferente.
xkill
es posible que no finalice el proceso si está diseñado para poder recuperarse de un bloqueo del servidor X o pérdida de conectividad de red, pero la mayoría de las aplicaciones simplemente se bloquean en estas circunstancias. En cualquier caso, las ventanas se habrán ido. Y los procesos remotos y locales se manejan de manera idéntica.
uso xkill
. Simplemente escriba xkill
su terminal y haga clic en la ventana requerida.
xkill