1 分钟阅读 次阅读

在 Ubuntu 桌面环境中,有时我们需要查找某个图形界面程序对应的进程 ID(PID),以便进行进程监控、资源分析、强制结束进程等操作。本文将介绍几种常用的命令行工具和方法,帮助您快速定位窗口对应的进程。

方法一:使用 wmctrl 查看窗口列表

wmctrl 是一个命令行工具,用于与窗口管理器交互,可以列出当前桌面上的所有窗口。

安装与基本命令

# 安装 wmctrl
sudo apt install wmctrl

# 列出所有窗口
wmctrl -l

输出示例

0x01e0000a  0 RK3588 signway@RK3588: ~/hcg/apps
0x02400017  0 RKKM8 CabinetInsideLowerMechine.Shell
0x02400021  0 RK3588 DialogMianWindow
0x02400024  0 RK3588 DialogMianWindow
0x01e016f4  0 RK3588 signway@RK3588: ~
0x01e02431  0 RK3588 signway@RK3588: ~

输出列说明

  • 第一列:窗口 ID(十六进制)
  • 第二列:桌面编号
  • 第三列及之后:窗口标题(某些窗口可能无标题)

扩展用法

# 显示更多窗口详细信息
wmctrl -lp

这会同时显示每个窗口对应的进程 ID(PID)。

方法二:使用 xprop 获取指定窗口的 PID

xprop 是一个 X Window 系统属性显示工具,可以交互式地获取窗口属性。

基本使用

# 运行命令后,鼠标点击目标窗口
xprop _NET_WM_PID

输出示例

_NET_WM_PID(CARDINAL) = 1234

其中 1234 即为该窗口对应的进程 ID。

一步获取(非交互式)

如果您知道窗口 ID,可以直接查询:

xprop -id 0x01e0000a _NET_WM_PID

方法三:使用 xdotool 获取活动窗口 PID

xdotool 是一个自动化 X 窗口操作的工具,可以模拟键盘输入、鼠标移动等操作。

安装与使用

# 安装 xdotool
sudo apt install xdotool

# 获取当前活动窗口的PID
xdotool getwindowfocus getwindowpid

输出示例

1234

更多实用命令

# 获取当前活动窗口的窗口ID
xdotool getwindowfocus

# 根据窗口标题查找窗口并获取PID
xdotool search --name "Firefox" getwindowpid

方法四:使用 xwininfo 获取窗口信息

xwininfo 可以显示关于 X 窗口的信息,包括窗口 ID。

基本使用

# 运行后点击目标窗口
xwininfo | grep "Window id"

输出示例

xwininfo: Window id: 0x4a (has no name)

结合其他工具使用

# 获取窗口ID后查询PID
WIN_ID=$(xwininfo | grep "Window id:" | awk '{print $4}')
xprop -id $WIN_ID _NET_WM_PID

方法五:使用 pgreppstree 辅助查找

通过进程名查找

# 查找所有Firefox进程
pgrep -l firefox

# 显示进程树,查看父子进程关系
pstree -p | grep -A 5 -B 5 firefox

工具对比与选择建议

工具 优点 缺点 适用场景
wmctrl 一次性查看所有窗口 某些窗口可能无标题 浏览所有窗口
xprop 精确获取窗口属性 需要交互或已知窗口 ID 获取特定窗口 PID
xdotool 功能强大,可自动化 需要额外安装 获取活动窗口或脚本操作
xwininfo 交互简单 信息有限 快速获取窗口 ID

留下评论