ubuntu 查看指定进程的全部线程运行情况

在 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 # 启动后按以下步骤操作:
  1. 按 F2 进入设置。
  2. 选择 "Display threads"(启用线程显示)。
  3. 按 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 适合深入调试。