use*_*456 11 command-line bash batch wmctrl
给定由 生成的 ID wmctrl -l,我希望能够终止链接到窗口 ID 的进程。
你会建议怎么做?
Flo*_*sch 10
如果您使用wmctrl -lpPID,则在第三列中。
对于给定的窗口 ID,您可以使用
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
Run Code Online (Sandbox Code Playgroud)
(用您的窗口 ID 替换 WID)
Nyk*_*kin 10
除了按照 Florian Diesch 和 Serg 的其他答案中所述列出 PID 之外,您还可以使用-icoption 直接关闭窗口:
$ wmctrl -ic 0x02e00085
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
一旦你知道了这一点,提取那个窗口的 PID 并将它传递给一个微不足道的练习 kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
Run Code Online (Sandbox Code Playgroud)
您也可以使用xkill -id [id]. 该xkill工具从其他答案的工作方式不同-而不是关闭窗口或直接杀伤的过程中,它指示X服务器断开连接创建窗口客户端。这通常会导致进程终止,即使对于远程进程也是如此。
每种方法的优缺点:
wmctrl -c“优雅地”关闭窗口 - 就像您自己单击了窗口管理器的关闭按钮一样。如果应用程序不希望窗口被关闭或被冻结,这可能不会终止进程,甚至可能不会关闭窗口。
使用wmctrl -lpwith的 pidkill可以保证终止进程,但如果进程可能在不同的机器上运行,则可能需要额外的工作或根本不工作。
xkill可能不会终止进程,如果它被设计为能够从 X 服务器崩溃或网络连接丢失中恢复,但大多数应用程序在这些情况下只会崩溃。无论如何,窗户都会消失。远程进程和本地进程的处理方式相同。