Angesichts der von erstellten IDs wmctrl -l
möchte ich den mit der Fenster-ID verknüpften Prozess beenden können.
Wie würden Sie vorschlagen, es zu tun? '
Angesichts der von erstellten IDs wmctrl -l
möchte ich den mit der Fenster-ID verknüpften Prozess beenden können.
Wie würden Sie vorschlagen, es zu tun? '
Antworten:
Neben der Auflistung der PID, wie in anderen Antworten von Florian Diesch und Serg beschrieben, können Sie die -ic
Option verwenden, um das Fenster direkt zu schließen:
$ wmctrl -ic 0x02e00085
Wenn Sie wmctrl -lp
die PIDs verwenden, befinden Sie sich in der dritten Spalte.
Für eine bestimmte Fenster-ID können Sie verwenden
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(Ersetzen Sie WID durch Ihre Fenster-ID)
col3
.
wmctrl
hat tatsächlich ein anderes Flag -p
zum Auflisten der 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
Sobald Sie dies wissen, ist es eine triviale Übung, die PID dieses Fensters zu extrahieren und an sie weiterzugeben kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
Sie können auch verwenden xkill -id [id]
. Das Dienstprogramm xkill funktioniert anders als die anderen Antworten. Anstatt das Fenster zu schließen oder den Prozess direkt abzubrechen , weist es den X-Server an, den Client, der das Fenster erstellt hat, zu trennen. Dies führt normalerweise dazu, dass der Prozess auch für einen Remote-Prozess beendet wird.
Vor- und Nachteile für jeden Ansatz:
wmctrl -c
schließt ein Fenster "elegant" - als hätten Sie selbst auf die Schaltfläche zum Schließen des Fenstermanagers geklickt. Dadurch wird der Prozess möglicherweise nicht abgebrochen und das Fenster wird möglicherweise nicht geschlossen, wenn die Anwendung nicht möchte, dass das Fenster geschlossen wird oder eingefroren wird.
Die Verwendung der PID von wmctrl -lp
with beendet kill
den Prozess garantiert, erfordert jedoch möglicherweise zusätzliche Arbeit oder funktioniert überhaupt nicht, wenn der Prozess möglicherweise auf einem anderen Computer ausgeführt wird.
xkill
Der Prozess wird möglicherweise nicht beendet, wenn er nach einem Absturz des X-Servers oder einem Verlust der Netzwerkverbindung wiederhergestellt werden kann. Die meisten Anwendungen stürzen jedoch unter diesen Umständen einfach ab. In jedem Fall werden die Fenster weg sein. Remote-Prozesse und lokale Prozesse werden identisch behandelt.
verwenden xkill
. Geben xkill
Sie einfach Ihr Terminal ein und klicken Sie auf das gewünschte Fenster.
xkill