从窗口获取过程信息的简单方法

Gqq*_*big 19 window process 18.04

在 Windows 上,我可以使用 Process Explorer 并将其十字准线拖动到一个窗口,然后 Process Explorer 突出显示关联的进程。

在 Ubuntu 上,我在 System Monitor 中没有找到这样的功能。从窗口获取进程的简单方法是什么?

我愿意下载替代的进程监视器或其他工具。

Abh*_*air 20

如果您可以使用终端,请尝试以下操作:

xprop | grep WM_CLASS
Run Code Online (Sandbox Code Playgroud)

并且您的光标应该变成十字,允许您单击任何窗口以获取其进程名称。如果您只需要 PID,请尝试:

xprop | awk '/PID/ {print $3}'
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。

  • `grep` 并不是真正必要的,你可以给出一个属性名称作为参数来只显示那个,比如直接使用 `xprop WM_CLASS`。请注意,尤其是`WM_CLASS` 不必与进程可执行文件相同,它可以是开发人员设置的任意值。 (6认同)

Byt*_*der 14

在另一个答案中xprop已经提到使用,这可能是最好的解决方案。

另一种方法可能是在可能的情况下使用wmctrl -lp列出窗口管理器管理的所有窗口及其各自的进程 ID (PID):

$ wmctrl -lp
0x03a00002  0 1570   type40mark3 XdndCollectionWindowImp
0x03a00003  0 1570   type40mark3 unity-launcher
0x03a00004  0 1570   type40mark3 unity-panel
0x03a00005  0 1570   type40mark3 unity-dash
0x03a00006  0 1570   type40mark3 Hud
0x02c0000a -1 302    type40mark3 Desktop
0x08a00003  0 8861   type40mark3 18.04 - Easy way to get process from window - Ask Ubuntu - Mozilla Firefox
0x08a00033  0 8861   type40mark3 Some other site in a different window - Mozilla Firefox
0x0840b72c  0 20705  type40mark3 bytecommander@type40mark3: ~
0x08800001  0 7389   type40mark3 New Tab - Chromium
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用此 PID 来获取有关该过程的更多信息,例如ps aux -q YOUR_PID_HERE

$ ps aux -q 20705
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
bytecom+ 20705  0.0  0.2 676820 32268 ?        Sl   Jun28   1:58 /usr/lib/gnome-terminal/gnome-terminal-server
Run Code Online (Sandbox Code Playgroud)