Angesichts der von erstellten IDs wmctrl -lmö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 -lmö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 -icOption verwenden, um das Fenster direkt zu schließen:
$ wmctrl -ic 0x02e00085
Wenn Sie wmctrl -lpdie 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 .
wmctrlhat tatsächlich ein anderes Flag -pzum 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 -cschließ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 -lpwith beendet killden 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.
xkillDer 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 xkillSie einfach Ihr Terminal ein und klicken Sie auf das gewünschte Fenster.
xkill