在SMP系统中,我们的应用程序经常使用多线程的技术,那么在Linux中如何查看某个进程的多个线程呢?

本文介绍3种命令来查看Linux系统中的线程(LWP)的情况:

在我的系统中,用qemu-system-x86_64命令启动了一个SMP的Guest,所以有几个qemu的线程,以此为例来说明。

1. pstree 命令

查看进程和线程的树形结构关系

[root@jay-linux ~]# pstree | grep qemu

|-terminal-+-bash---qemu-sys---2*[{qemu-system-x8}]

[root@jay-linux ~]# pstree -p | grep qemu

|-terminal(194)-+-bash(196)---qemu-sys(657)-+-{qemu}(660)

|              |                             `-{qemu}(661)

2. ps 命令

-L参数显示进程,并尽量显示其LWP(线程ID)和NLWP(线程的个数)。

[root@jay-linux ~]# ps -eLf | grep qemu

root     657 196 657  0 3 13:48 pts/1   00:00:00 qemu-sys -m1024 -smp 2

root     657 196 660  3 3 13:48 pts/1   00:00:26 qemu-sys -m1024 -smp 2

root     657 196 661  2 3 13:48 pts/1   00:00:19 qemu-sys -m1024 -smp 2

root     789  9799 10789  0 1 14:02 pts/0   00:00:00grep--color=auto qemu

上面命令查询结果的第二列为PID,第三列为PPID,第四列为LWP,第六列为NLWP。

另外,ps命令还可以查看线程在哪个CPU上运行,命令如下:

[root@jay-linux ~]# ps -eo ruser,pid,ppid,lwp,psr,args -L | grep qemu

root     657 196 657   1 qemu-sys -hda smep-temp.qcow -m1024 -smp 2

root     657 196 660   1 qemu-sys -hda smep-temp.qcow -m1024 -smp 2

root     657 196 661   2 qemu-sys -hda smep-temp.qcow -m1024 -smp 2

root     834  9799 10834   1grep--color=auto qemu

其中,每一列依次为:用户ID,进程ID,父进程ID,线程ID,运行该线程的CPU的序号,命令行参数(包括命令本身)。

3. top 命令

其中H命令可以显示各个线程的情况。(在top命令后,按H键;或者top -H)

[root@jay-linux ~]# top -H

top - 14:18:20 up 22:32,  4 users,  load average: 2.00, 1.99, 1.90

Tasks: 286 total,   1 running, 285 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   3943892k total,  1541540k used,  2402352k free,   164404k buffers

Swap:  4194300k total,      0k used,  4194300k free,   787768k cached

PID USER    PR  NI  VIRT  RES  SHR S%CPU%MEMTIME+  COMMAND

660 root      20   0 1313m 188m 2752 S  2.3  4.9   0:46.78 qemu-sys

661 root      20   0 1313m 188m 2752 S  2.0  4.9   0:39.44 qemu-sys

867 root      20   0 15260 1312  960 R  0.3  0.0   0:00.07 top

1 root    20   0 19444 1560 1252 S  0.0  0.0   0:00.34 init

2 root    20   0     0  0   0 S  0.0  0.0   0:00.02 kthreadd

....

在top中也可以查看进程(进程)在哪个CPU上执行的。

执行top后,按f,按j(选中* J: P = Last used cpu (SMP)),然后按空格或回车退出设置,在top的显示中会多出P这一列是最近一次运行该线程(进程)的CPU。

PID USER      PR  NI  VIRT  RES  SHR S%CPU%MEMTIME+  P COMMAND

661 root      20   0 1313m 188m 2752 S  2.3  4.9   0:44.24 3 qemu-sys

660 root      20   0 1313m 188m 2752 S  2.0  4.9   0:51.74 0 qemu-sys

874 root      20   0 15260 1284  860 R  0.7  0.0   0:00.32 2 top

1 root    20   0 19444 1560 1252 S  0.0  0.0   0:00.34 0 init

2 root    20   0     0  0   0 S  0.0  0.0   0:00.02 1 kthreadd

更多信息,请 man pstree, man top, man ps 查看帮助文档。

注: LWP为轻量级进程(即:线程),(light weight process, or thread) 。

linux进程查看所有线程,Linux中查看进程的多线程的方法相关推荐

  1. linux gdb打印内存命令,gdb中查看内存方法总结

    出自计组第三次上机附加题第二题 用gdb运行程序b,输出中相应地址究竟指向了什么? 请贴上你是如何找到的(使用了什么gdb指令等等) 在查看地址前首先需要断点定位到需要查看的位置 显示代码内容 (gd ...

  2. linux下查看mysql线程_linux-如何查看线程在哪个CPU内核中运行?

    linux-如何查看线程在哪个CPU内核中运行? 在Linux中,假设线程的pid是[pid],则从目录/ proc / [pid]中我们可以获得许多有用的信息. 例如,这些proc文件/ proc ...

  3. linux 查看硬盘的uuid_Ubuntu中查看硬盘分区UUID的方法(所有Linux目录的解释)

    在Ubuntu中UUID的两种获取方法,至于UUID是什么,你可以大概理解为分区的标识符,像条形码那样. 在终端中输入下面的命令就可心查看到分区UUID了. 命令1. sudo blkid 命令2. ...

  4. linux 查看显卡信号_Linux中查看显卡硬件信息

    Linux中查看显卡硬件信息 https://ywnz.com/linuxjc/67.html lspci -vnn | grep VGA -A 12 lshw -C display 查看当前使用的显 ...

  5. adb ps shell 查看进程_深入理解Android中查看进程(ps)命令

    By Long Luo 注: 这篇文章是2013年发表在个人CSDN Blog上解析ANDROID ps命令执行后各项参数的含义,今天将其移到个人独立博客站上. 如何查看Android进程信息呢? 可 ...

  6. python 协程、进程、线程_Python 中的进程、线程、协程

    1. 进程 进程是正在运行的程序实例,是内核分配资源的最基本的单元.进程拥有自己独立的堆和栈,独立的地址空间,资源句柄.进程由 OS 调度,调度开销较大,在并发的切换过程效率较低. Python 提供 ...

  7. linux htop详解 线程,Linux htop 工具使用

    一.Htop的使用简介 大家可能对top监控软件比较熟悉,今天我为大家介绍另外一个监控软件Htop,姑且称之为top的增强版, 相比top其有着很多自身的优势.如下: ·   两者相比起来,top比较 ...

  8. linux 反复创建销毁线程,Linux:回收循环创建的多个线程

    上午我说了循环创建多个线程,由于进程与线程是如此的相似,进程我们知道要回收,那么线程也自然要回收啦.我们接着看控制原语: 线程与共享 线程间共享全局变量! [牢记]:线程默认共享数据段.代码段等地址空 ...

  9. linux mint 18.3浏览器,在Linux Mint 19/Ubuntu 18.04中安装Tor Browser浏览器的方法

    本文介绍在Linux Mint 19/Ubuntu 18.04系统中安装Tor Browser浏览器的方法,本文不使用Tor的默认Ubuntu存储库,因为它们包含旧版本的Tor. 一.添加Tor存储库 ...

最新文章

  1. 科大讯飞语音助手Lite智能鼠标电脑版安装不成功为什么?怎么办?
  2. 推荐算法炼丹笔记:CTR点击率预估系列入门手册
  3. C语言:L1-037 A除以B (10分)(解题报告)
  4. [css] css中class和id选择器有什么区别?
  5. sql 显示百分比_轻松搞定数据分析之SQL——简单查询
  6. 了解与防御XSS攻击
  7. C++设计模式-采用装饰模式用户和管理员加载不同的模块(Qt框架实现)
  8. 87相似标准形08——Jordan标准形
  9. SpringBoot(一)启动相关
  10. 《程序是怎样跑起来的》第十一章读后感
  11. 电信光猫 远程服务器,如何禁止电信远程控制服务器修改光猫配置信息
  12. 机器学习实战K-近邻算法
  13. 资阳停车场系统推荐_专业停车场系统维护业务广泛
  14. 市场下行手机市场成血海,为何荣耀逆流而上?
  15. linux 空白进程,Linux空白行:行号显示、空白行数统计、删除空白行
  16. hangfire-简单开始
  17. PCB板各层定义及解释
  18. 简单的书签服务LinkDing
  19. echarts饼图铺满整个div
  20. 晒一下 CSDN 颁发的 MVB 奖杯

热门文章

  1. Tensorflow中的Protocol Buffer
  2. php 7.1/7.3使用 json_encode 函数造成浮点类型数据出现精度问题
  3. SqlServer千万级以上的数据表查询优化方案《冷热数据库分离》的思路
  4. windows下安装php性能分析工具XHProf(windows版本)
  5. Linux之nginx配置文件的分析整理
  6. Laravel的Class Laravel\Passport\Passport not found
  7. jQuery的var that=this
  8. PHP的Static与Global
  9. #未能找到类型或命名空间名称_如何变更文件类型为自己所需要的类型(通俗易懂快速上手)...
  10. 用稳压管保护单片机引脚_零基础入门单片机(2)学会控制IO引脚你就入门啦