如何杀死特定的X窗口


Answers:


10

除了按照Florian Diesch和Serg的其他答案中所述列出PID之外,您还可以使用-icoption直接关闭窗口:

$ wmctrl -ic 0x02e00085

3
如果进程卡住了,则可能不会注意到您关闭了窗口。该窗口将消失,但是该进程仍将存在,并可能消耗CPU和RAM。
kasperd


8

wmctrl实际上还有另一个-p列出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

知道这一点后,提取该窗口的PID并将其传递给 kill

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

6

您也可以使用xkill -id [id]。该xkill工具从其他答案的工作方式不同-而不是关闭窗口或直接杀伤的过程中,它指示X服务器断开连接创建窗口客户端。这通常会导致进程终止,即使对于远程进程也是如此。

每种方法的优点和缺点:

  • wmctrl -c“优雅地”关闭窗口-就像您自己单击窗口管理器的关闭按钮一样。如果应用程序不希望该窗口被关闭或冻结,则这可能不会终止该进程,甚至可能无法关闭该窗口。

  • 使用wmctrl -lpwith中的pid kill可以确保杀死进程,但是如果进程可能在其他计算机上运行,​​则可能需要额外的工作或根本无法工作。

  • xkill如果它设计为能够从X服务器崩溃或网络连接丢失中恢复,则可能不会终止该过程,但是大多数应用程序在这种情况下只会崩溃。无论如何,窗户都会消失。远程进程和本地进程的处理方式相同。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.