如何在Linux上查看进程的线程
问题:我的程序在其中创建并执行多个线程。一旦创建了程序的各个线程,如何监视它们?我想查看各个线程及其名称的详细信息(例如,CPU/内存使用情况)。
线程是现代操作系统上并行执行的流行编程抽象。当线程在程序内部分叉以进行多个执行流时,这些线程在它们之间共享某些资源(例如内存地址空间、打开的文件),以最大限度地减少分叉开销并避免昂贵的 IPC(进程间通信)通道。这些属性使线程成为并发执行的有效机制。
在 Linux 中,程序中创建的线程(也称为轻量级进程 (LWP))将具有与程序的 PID 相同的“线程组 ID”。每个线程都会有自己的线程 ID (TID)。对于 Linux 内核的调度程序来说,线程只不过是碰巧共享某些资源的标准进程。经典的命令行工具,如ps
或top
,默认显示进程级信息,可以指示显示线程级信息。
以下是在 Linux 上显示进程线程的几种方法。如果您想简单地计算线程中的线程数,请查看这篇文章。
方法一:ps
在 ps
命令中,-T
选项启用线程视图。以下命令列出具有
$ ps -T -p <pid>

SID
列表示线程 ID,CMD
列显示线程名称。
方法二:top
top
命令可以显示各个线程的实时视图。要在 top
输出中启用线程视图,请使用 -H
选项调用 top
。这将列出所有 Linux 线程。您还可以在 top
运行时按
$ top -H

要将 top
输出限制为特定进程
$ top -H -p <pid>

方法三:htop
查看每个进程的线程的一种更用户友好的方法是通过 htop,这是一个基于 ncurses 的交互式进程查看器。该程序允许您监视树视图中的各个线程。
要在 htop
中启用线程视图,请启动 htop
,然后按 htop
设置菜单。在设置
列下选择显示选项
,然后打开三视图
和显示自定义线程名称
选项。按

现在您将看到各个进程的后续线程视图。
