在 Ubuntu 系统中,查看指定进程的全部线程及其运行情况,可以通过以下几种工具实现:
1. 使用 ps
命令
用途:列出进程的线程信息。
ps -T -p <PID> # 替换 <PID> 为目标进程的 PID
- 输出字段:
SPID
:线程 ID(轻量级进程 ID)。NLWP
:线程数量。LWP
:线程 ID(同SPID
)。S
:线程状态(如R
运行、S
睡眠)。
示例:
ps -T -p 1234
2. 使用 top
命令
用途:实时动态查看进程的线程。
top -H -p <PID> # 替换 <PID> 为目标进程的 PID
- 操作说明:
- 按
H
键切换至线程模式。 - 按
P
按 CPU 使用率排序,按M
按内存使用率排序。 - 按
q
退出。
- 按
示例:
top -H -p 1234
3. 使用 htop
命令
用途:增强版 top
,支持鼠标操作和线程查看。
htop # 启动后按以下步骤操作:
- 按
F2
进入设置。 - 选择 "Display threads"(启用线程显示)。
- 按
F3
搜索并过滤目标进程的 PID。
界面说明:
- 启用线程后,进程下会显示所有关联线程。
- 支持通过鼠标点击排序和过滤。
4. 使用 pidstat
命令
用途:监控进程的线程级资源使用情况(需安装 sysstat
包)。
sudo apt install sysstat # 如果未安装,先执行安装
pidstat -t -p <PID> 1 # 每秒监控一次,替换 <PID> 为目标进程的 PID
- 输出字段:
TID
:线程 ID。%usr
:用户态 CPU 使用率。%sys
:内核态 CPU 使用率。kB_rd/s
:每秒读取数据量(KB)。kB_wr/s
:每秒写入数据量(KB)。
示例:
pidstat -t -p 1234 1
5. 使用 gdb
命令
用途:调试工具,可附加到进程查看线程详细信息。
gdb -p <PID> # 替换 <PID> 为目标进程的 PID
- 常用命令:
(gdb) info threads # 列出所有线程 (gdb) thread <TID> # 切换到指定线程(替换 <TID> 为线程 ID) (gdb) bt # 查看当前线程的调用栈 (gdb) quit # 退出 gdb
示例:
gdb -p 1234
(gdb) info threads
总结
- 快速查看线程列表:使用
ps -T -p <PID>
或top -H -p <PID>
。 - 监控资源使用:使用
pidstat -t -p <PID> 1
。 - 调试分析:使用
gdb -p <PID>
查看线程调用栈和状态。
根据需求选择合适的工具:ps
/top
适合快速查看,pidstat
适合监控资源,gdb
适合深入调试。