Étant donné les identifiants produits par wmctrl -l
, j'aimerais pouvoir tuer le processus lié à l'identifiant de la fenêtre.
Comment proposeriez-vous de le faire?
command-line
bash
batch
wmctrl
user123456
la source
la source
Si vous utilisez
wmctrl -lp
les PID se trouvent dans la troisième colonne.Pour un ID de fenêtre donné, vous pouvez utiliser
(remplacez WID par votre identifiant de fenêtre)
la source
col3
.wmctrl
a en fait un autre indicateur-p
pour lister le PID.Une fois que vous savez cela, c'est un exercice trivial d'extraire le PID de cette fenêtre et de le transmettre à
kill
la source
Vous pouvez également utiliser
xkill -id [id]
. L' utilitaire xkill fonctionne différemment des autres réponses - plutôt que de fermer la fenêtre ou de tuer le processus directement, il demande au serveur X de déconnecter le client qui a créé la fenêtre. Cela a normalement pour effet de provoquer l'arrêt du processus même pour un processus distant.Avantages et inconvénients de chaque approche:
wmctrl -c
ferme une fenêtre "gracieusement" - comme si vous aviez cliqué vous-même sur le bouton de fermeture du gestionnaire de fenêtres. Cela peut ne pas tuer le processus, ni même fermer la fenêtre, si l'application ne souhaite pas que la fenêtre soit fermée ou est gelée.L'utilisation du pid à partir de
wmctrl -lp
aveckill
est garantie pour tuer le processus, mais peut nécessiter un travail supplémentaire ou ne pas fonctionner du tout si le processus s'exécute sur une autre machine.xkill
peut ne pas terminer le processus, s'il est conçu pour pouvoir récupérer d'un crash du serveur X ou d'une perte de connectivité réseau, mais la plupart des applications se bloqueront simplement dans ces circonstances. Dans tous les cas, les fenêtres auront disparu. Et les processus distants et locaux sont traités de manière identique.la source
utiliser
xkill
. Tapez simplementxkill
votre terminal et cliquez sur la fenêtre souhaitée.la source