线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被拆分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使拆分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发执行时成为一个高效的机制。

在Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”。然后,各个线程会获得其自身的线程ID(TID)。对于Linux内核调度器而言,线程不过是恰好共享特定资源的标准的进程而已。经典的命令行工具,如ps或top,都可以用来显示线程级别的信息,只是默认情况下它们显示进程级别的信息。

这里提供了在Linux上显示某个进程的线程的几种方式。

方法一 万能的ps命令

[root@localhost ~]# man 1 ps
THREAD DISPLAYH      Show threads as if they were processes.-L     Show threads, possibly with LWP and NLWP columns.m      Show threads after processes.-m     Show threads after processes.-T     Show threads, possibly with SPID column.
[root@localhost ~]# ps auwwx | grep mysql | grep -v grep
mysql     1092  1.2 23.0 1143316 234368 ?      Sl   10:51   0:10 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
[root@localhost ~]# ps -T -p 1092PID  SPID TTY          TIME CMD1092  1092 ?        00:00:00 mysqld1092  1198 ?        00:00:00 mysqld1092  1223 ?        00:00:00 mysqld1092  1224 ?        00:00:00 mysqld1092  1225 ?        00:00:00 mysqld1092  1226 ?        00:00:00 mysqld1092  1227 ?        00:00:00 mysqld1092  1228 ?        00:00:00 mysqld1092  1229 ?        00:00:00 mysqld1092  1230 ?        00:00:00 mysqld1092  1231 ?        00:00:00 mysqld1092  1232 ?        00:00:00 mysqld1092  1233 ?        00:00:00 mysqld1092  2280 ?        00:00:00 mysqld1092  2281 ?        00:00:00 mysqld1092  2282 ?        00:00:00 mysqld1092  2283 ?        00:00:00 mysqld1092  2284 ?        00:00:00 mysqld1092  2285 ?        00:00:00 mysqld1092  2286 ?        00:00:00 mysqld1092  2287 ?        00:00:00 mysqld1092  2288 ?        00:00:00 mysqld1092  2289 ?        00:00:00 mysqld1092  2290 ?        00:00:00 mysqld1092  2291 ?        00:00:00 mysqld1092  2292 ?        00:00:00 mysqld1092  2294 ?        00:00:00 mysqld1092  2297 ?        00:00:00 mysqld1092  2316 ?        00:00:09 mysqld1092  2351 ?        00:00:00 mysqld1092  2352 ?        00:00:00 mysqld1092  2353 ?        00:00:00 mysqld1092  2354 ?        00:00:00 mysqld1092  2385 ?        00:00:00 mysqld1092  2413 ?        00:00:00 mysqld

方法二 top命令

top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程,“-p”选项,可以选择查看的进程。在top运行时,也可以通过按“H”键将线程查看模式切换为开或关。

[root@localhost ~]# man 1 topGlobal-defaultsA - Alt display      Off (full-screen)* d - Delay time       1.5 seconds* H - Threads mode     Off (summarize as tasks)I - Irix mode        On  (no, `solaris' smp)* p - PID monitoring   Off (show all processes)* s - Secure mode      Off (unsecured)B - Bold enable      On  (yes, bold globally)
[root@localhost ~]# top -H -p 1092
top - 11:12:07 up 20 min,  1 user,  load average: 0.18, 0.12, 0.11
Threads:  35 total,   0 running,  35 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  1016476 total,   199088 free,   534464 used,   282924 buff/cache
KiB Swap:   839676 total,   839640 free,       36 used.   315284 avail Mem PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                             2283 mysql     20   0 1143316 234368   8264 S  0.3 23.1   0:00.11 mysqld                                              1092 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.26 mysqld                                              1198 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              1223 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.02 mysqld                                              1224 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.08 mysqld                                              1225 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.04 mysqld                                              1226 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.03 mysqld                                              1227 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.04 mysqld                                              1228 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.03 mysqld                                              1229 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.07 mysqld                                              1230 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.07 mysqld                                              1231 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.02 mysqld                                              1232 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.07 mysqld                                              1233 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.07 mysqld                                              2280 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.03 mysqld                                              2281 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.04 mysqld                                              2282 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.01 mysqld                                              2284 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2285 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2286 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2287 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2288 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2289 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2290 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2291 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2292 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2294 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.00 mysqld                                              2297 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:00.08 mysqld                                              2316 mysql     20   0 1143316 234368   8264 S  0.0 23.1   0:14.28 mysqld                                              

以上两种方法为常用的查看进程中线程情况的方法,再次记录下。

参考:https://linux.cn/article-5633-1.html

Linux 下查看进程内的线程情况 ps, top 命令相关推荐

  1. linux查看进程的内存使用情况,[转]linux下查看进程内存使用情况

    动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + ...

  2. 查看linux进程的设备io,Linux下查看进程IO工具iopp

    Linux下的IO检测工具最常用的是iostat,不过iostat只能查看到总的IO情况.如果要细看具体那一个程序点用的IO较高,可以使用iotop .不过iotop对内核版本和Python版本有要求 ...

  3. linux环境下查看进程,Linux下查看进程(程序)启动时的环境变量

    背景: 因最近试安装Linux下的jira,有一个中文插件安装后,一旦设置开机启动后,它是英文,而在终端再重新启动一次后呢,似乎插件生效,它又恢复为正常中文界面,我首先想这这涉及到一个环境变量的问题, ...

  4. linux 查询内存和核心数,Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数...

    1.查看物理CPU的个数 [root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc ...

  5. linux下查看进程的线程数,linux查看进程的线程数

    top -H -p $PID  #查看对应进程的那个线程占用CPU过高 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行 ...

  6. JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta (Linux 如何查看进程的各线程的CPU占用 )

    http://dolphin-ygj.iteye.com/blog/366216 JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta 博客分类: 调优 ...

  7. linux下查看进程占用端口和端口占用进程命令

    Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...

  8. linux 查看进程变量,Linux下查看进程(程序)启动时的环境变量

    Linux下查看进程(程序)启动时的环境变量 Linux的pargs ==================================== 今天又遇到一个老问题: 同事遇到了sqlplus &qu ...

  9. linux ps指令查看进程,linux下查看进程指令-ps

    在Linux下查看进程指令可以用ps(process status) 是unix/Linux下通用的进程状态查看工具 ps的常用选项 选项功能介绍 -a显示所有终端中的进程.注意只有与终端关联的进程才 ...

最新文章

  1. Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决
  2. DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器...
  3. 【Kotlin】接口 ( 声明 | 实现 | 接口方法 | 接口属性 | 接口覆盖冲突 | 接口继承 )
  4. LeetCode 43字符串相乘44通配符匹配
  5. Linux / 设置和查看环境变量的方法
  6. DataArtisans战略联手阿里云 Apache Flink服务能力云化
  7. 【转】ABP源码分析四十五:ABP ZERO中的EntityFramework模块
  8. Python3 Ocr 初探
  9. 数字金融欺诈行为名词表
  10. c++ mat赋值_Mat 的几种初始化和赋值方法
  11. Spring Boot 部署与后台运行服务配置
  12. 生信蛋白分析数据库与ID转换
  13. dice系数 交叉熵_ACL2020 | 香侬科技提出用Dice Loss缓解数据集数据不平衡问题
  14. [2016 T-EDGE]王坚对话无人机教父:创新就要享受走在悬崖边的刺激
  15. 牛叔说电影-圣堂四骑士
  16. Ubuntu18.04系统安装视频剪辑软件shotcut
  17. Android 使用自带的MediaCodec 框架进行本地视频压缩
  18. iOS 5~7的模拟器下载
  19. 全方位解读TS501微型数采仪的功能及用法
  20. 浙江省单招单考计算机专业,2017 年 浙江省单考单招 计算机 专业 考试大纲

热门文章

  1. 伍迷创意随想集 之 杯具拥有个性,个性成就杯具 - 伍迷 - 博客园
  2. matlab将单词China译成密码,要将china译成密码 C++源代码 (谭浩强c++程序设计第3版答案)...
  3. 达尔文计算机二级考试作弊,令达尔文“讨厌的谜团”终于解开
  4. Verilog HDL和VHDL的区别
  5. 解决使用Spring Boot上传图片路径错误问题【入坑之一】
  6. 《谢谢你迟到》托马斯弗里德曼_epub+mobi+azw3
  7. angular中的$q使用详解
  8. JAVA实现RC4加密
  9. 【csq加油】华为2016校园招聘上机笔试题(一)
  10. 《淘宝网开店 SEO 推广 营销 爆款 实战200招》——1.7 网店推广的误区