TranslateProject/published/201506/20150518 Linux FAQs with Answers--How to view threads of a process on Linux.md

58 lines
3.2 KiB
Markdown
Raw Normal View History

Linux有问必答Linux上如何查看某个进程的线程
================================================================================
> **问题** 我的程序在其内部创建并执行了多个线程我怎样才能在该程序创建线程后监控其中单个线程我想要看到带有它们名称的单个线程详细情况CPU/内存使用率)。
线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时这些线程就会在它们之间共享特定的资源内存地址空间、打开的文件以使叉分开销最小化并避免大量高成本的IPC进程间通信通道。这些功能让线程在并发执行时成为一个高效的机制。
在Linux中程序中创建的线程也称为轻量级进程LWP会具有和程序的PID相同的“线程组ID”。然后各个线程会获得其自身的线程IDTID。对于Linux内核调度器而言线程不过是恰好共享特定资源的标准的进程而已。经典的命令行工具如ps或top都可以用来显示线程级别的信息只是默认情况下它们显示进程级别的信息。
这里提供了**在Linux上显示某个进程的线程**的几种方式。
### 方法一PS ###
在ps命令中“-T”选项可以开启线程查看。下面的命令列出了由进程号为\<pid>的进程创建的所有线程。
$ ps -T -p <pid>
![](https://farm8.staticflickr.com/7749/17350561110_94cacfc456_c.jpg)
“SID”栏表示线程ID而“CMD”栏则显示了线程名称。
### 方法二: Top ###
top命令可以实时显示各个线程情况。要在top输出中开启线程查看请调用top命令的“-H”选项该选项会列出所有Linux线程。在top运行时你也可以通过按“H”键将线程查看模式切换为开或关。
$ top -H
![](https://farm9.staticflickr.com/8824/17350561070_3dfe447974_c.jpg)
要让top输出某个特定进程\<pid>并检查该进程内运行的线程状况:
$ top -H -p <pid>
![](https://farm8.staticflickr.com/7797/17538002751_c8a3d574d8_c.jpg)
### 方法三: Htop ###
一个对用户更加友好的方式是通过htop查看单个进程的线程它是一个基于ncurses的交互进程查看器。该程序允许你在树状视图中监控单个独立线程。
要在htop中启用线程查看请开启htop然后按\<F2>来进入htop的设置菜单。选择“设置”栏下面的“显示选项”然后开启“树状视图”和“显示自定义线程名”选项。按\<F10>退出设置。
![](https://farm6.staticflickr.com/5338/17350364568_59bce22e7b_b.jpg)
现在,你就会看到下面这样单个进程的线程视图。
![](https://farm9.staticflickr.com/8885/17350560930_98952d5350_c.jpg)
--------------------------------------------------------------------------------
via: http://ask.xmodulo.com/view-threads-process-linux.html
作者:[Dan Nanni][a]
译者:[GOLinux](https://github.com/GOLinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://ask.xmodulo.com/author/nanni