Come posso uccidere una finestra X specifica


9

Dati gli ID prodotti da wmctrl -l, mi piacerebbe poter interrompere il processo collegato all'ID della finestra.

Come consiglieresti di farlo?

Risposte:


10

Oltre a elencare il PID come descritto nelle altre risposte di Florian Diesch e Serg, puoi usare l' -icopzione per chiudere direttamente la finestra:

$ wmctrl -ic 0x02e00085

3
Se il processo è bloccato, potrebbe non notare che hai chiuso la finestra. La finestra sparirà, ma il processo sarà ancora lì e probabilmente consumerà CPU e RAM.
Kasperd,

9

Se si utilizzano wmctrl -lpi PID si trovano nella terza colonna.

Per un determinato ID finestra è possibile utilizzare

kill $(wmctrl -lp | awk '/^WID/ {print $3}')

(sostituisci WID con il tuo ID finestra)


Forse più pulito invece di awk puoi semplicemente usarecol3 .
Pablo Bianchi,

8

wmctrlin realtà ha un altro flag -pper elencare 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 volta che lo sai, è un esercizio banale di estrarre il PID di quella finestra e passarlo a kill

wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill

6

Puoi anche usare xkill -id [id]. L' utilità xkill funziona in modo diverso dalle altre risposte - anziché chiudere la finestra o uccidere direttamente il processo, indica al server X di disconnettere il client che ha creato la finestra. Questo di solito ha l'effetto di far terminare il processo anche per un processo remoto.

Vantaggi e svantaggi di ciascun approccio:

  • wmctrl -cchiude una finestra "con garbo", come se si fosse fatto clic sul pulsante Chiudi del gestore finestre. Questo potrebbe non uccidere il processo e potrebbe anche non chiudere la finestra, se l'applicazione non desidera che la finestra venga chiusa o venga bloccata.

  • L'uso del pid da wmctrl -lpcon killè garantito per interrompere il processo, ma potrebbe richiedere un lavoro extra o non funzionare affatto se il processo potrebbe essere in esecuzione su un altro computer.

  • xkillpotrebbe non terminare il processo, se è progettato per essere in grado di recuperare da un arresto del server X o dalla perdita della connettività di rete, ma la maggior parte delle applicazioni si arresta in modo anomalo in queste circostanze. In ogni caso, le finestre spariranno. E i processi remoti e quelli locali sono gestiti in modo identico.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.