线程基本概念

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

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

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

3种方式

以下3种方式都可以查看进程下的线程

1)ps

2)top

3)htop

需要额外安装,yum install -y htop

方式一 :ps

在ps命令中,“-T” 选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程

ps -T -p <pid>

Tips: T 需要是大写的

“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。

示例

先通过jps 查看下java 都有那些进程

[root@cdh-manager my_script]# jps -l
11744 org.apache.zookeeper.server.quorum.QuorumPeerMain
11717 com.cloudera.enterprise.alertpublisher.AlertPublisher
12166 org.apache.hadoop.util.RunJar
21737 org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer
9865 com.cloudera.server.cmf.Main
12045 org.apache.hadoop.util.RunJar
11630 org.apache.hadoop.hdfs.server.namenode.NameNode
14000 com.cloudera.cmon.firehose.Main
11856 com.cloudera.kafka.wrap.Kafka
12049 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
11828 org.apache.hadoop.hbase.thrift.ThriftServer
11638 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
44761 org.apache.hadoop.util.RunJar
43993 sun.tools.jps.Jps
11643 org.apache.hadoop.hbase.rest.RESTServer
12283 org.apache.hadoop.hbase.master.HMaster
14043 com.cloudera.cmon.firehose.Main
14076 com.cloudera.cmf.eventcatcher.server.EventCatcherService
You have mail in /var/spool/mail/root

然后使用 ps -T -p 11744 查看下Zookeeper 进程相关的线程

“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。

[root@cdh-manager my_script]# ps -T -p 11744
   PID   SPID TTY          TIME CMD
 11744  11744 ?        00:00:00 java
 11744  12201 ?        00:00:01 java
 11744  12213 ?        00:00:01 java
 11744  12219 ?        00:00:01 java
 11744  12255 ?        00:00:57 java
 11744  12264 ?        00:00:00 java
 11744  12270 ?        00:00:00 java
 11744  12297 ?        00:00:00 java
 11744  12301 ?        00:00:30 java
 11744  12307 ?        00:00:12 java
 11744  12312 ?        00:00:00 java
 11744  12559 ?        00:00:02 java
 11744  12585 ?        00:00:00 java
 11744  12592 ?        00:11:46 java
 11744  13203 ?        00:00:29 java
 11744  13226 ?        00:00:00 java
 11744  13345 ?        00:01:55 java
 11744  13346 ?        00:00:00 java
 11744  13347 ?        00:00:18 java
 11744  13348 ?        00:00:17 java
 11744  13349 ?        00:03:58 java
 11744  13356 ?        00:00:44 java
 11744  13357 ?        00:00:00 java
 11744  13359 ?        00:00:44 java
 11744  13366 ?        00:00:00 java
 11744  13389 ?        00:01:29 java
 11744  13392 ?        00:00:55 java
 11744  13397 ?        00:01:43 java
 11744  13401 ?        00:00:00 java
 11744  15143 ?        00:01:29 java
 11744  15146 ?        00:01:29 java
 11744  15148 ?        00:07:16 java
 11744  15511 ?        00:00:02 java
 11744  44219 ?        00:00:00 java

方式二 :top

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

top -H

top 跟踪某个进程的线程, top -H -p <pid>

实际操作下:

top - 21:57:15 up 8 days,  1:15,  3 users,  load average: 0.53, 0.38, 0.32
Threads:  71 total,   0 running,  71 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.5 us,  1.7 sy,  0.0 ni, 92.6 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 16247820 total,   218504 free, 10114996 used,  5914320 buff/cache
KiB Swap:  8257532 total,  8257012 free,      520 used.  5456792 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND              
 13508 kafka     20   0 2948520 404180  28288 S  6.6  2.5 603:06.78 java                 
 14796 kafka     20   0 2948520 404180  28288 S  0.7  2.5   3:23.24 java                 
 14638 kafka     20   0 2948520 404180  28288 S  0.3  2.5  10:36.47 java                 
 14719 kafka     20   0 2948520 404180  28288 S  0.3  2.5   0:25.33 java                 
 14766 kafka     20   0 2948520 404180  28288 S  0.3  2.5  18:31.44 java                 
 14767 kafka     20   0 2948520 404180  28288 S  0.3  2.5  18:29.78 java                 
 14770 kafka     20   0 2948520 404180  28288 S  0.3  2.5   3:55.67 java                 
 14774 kafka     20   0 2948520 404180  28288 S  0.3  2.5   3:55.67 java                 
 14801 kafka     20   0 2948520 404180  28288 S  0.3  2.5   3:23.15 java                 
 11856 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.13 java                 
 13501 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:05.39 java                 
 13504 kafka     20   0 2948520 404180  28288 S  0.0  2.5  13:01.45 java                 
 13506 kafka     20   0 2948520 404180  28288 S  0.0  2.5  13:01.57 java                 
 13520 kafka     20   0 2948520 404180  28288 S  0.0  2.5  25:20.18 java                 
 13521 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:04.70 java                 
 13525 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:02.54 java                 
 13542 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:16.86 java                 
 13547 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.00 java                 
 13548 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:43.64 java                 
 13550 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:14.12 java                 
 13552 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.00 java                 
 13677 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.00 java                 
 13693 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.00 java                 
 13705 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.00 java                 
 13706 kafka     20   0 2948520 404180  28288 S  0.0  2.5  12:20.87 java                 
 14146 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:11.75 java                 
 14149 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:02.84 java                 
 14152 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:11.64 java                 
 14156 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:11.46 java                 
 14157 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:11.95 java                 
 14158 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:11.31 java                 
 14159 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:11.62 java                 
 14160 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:11.45 java                 
 14583 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.00 java                 
 14635 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:02.42 java                 
 14636 kafka     20   0 2948520 404180  28288 S  0.0  2.5  10:35.24 java                 
 14640 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:49.03 java                 
 14641 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:48.15 java                 
 14644 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:48.03 java                 
 14652 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:25.80 java                 
 14654 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:25.13 java                 
 14656 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:25.02 java                 
 14718 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:24.68 java                 
 14720 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:25.10 java                 
 14721 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:25.14 java                 
 14722 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:24.83 java                 
 14725 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:08.84 java                 
 14726 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:01.57 java                 
 14731 kafka     20   0 2948520 404180  28288 S  0.0  2.5   1:49.47 java                 
 14733 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.01 java                 
 14764 kafka     20   0 2948520 404180  28288 S  0.0  2.5   3:20.57 java                 
 14768 kafka     20   0 2948520 404180  28288 S  0.0  2.5   1:30.76 java                 
 14772 kafka     20   0 2948520 404180  28288 S  0.0  2.5  10:32.63 java                 
 14775 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:25.10 java                 
 14777 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:25.27 java                 
 14779 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.00 java                 
 14784 kafka     20   0 2948520 404180  28288 S  0.0  2.5   0:00.01 java

方式三:htop

htop 的用法请参考这篇文章:

htop使用详解--史上最强

https://www.cnblogs.com/programmer-tlh/p/11726016.html

Linux_Linux查看某个进程下面的线程相关推荐

  1. Linux下查看多线程进程下的线程

    Linux内核在执行程序时,将所有运行时信息写到了/proc/{pid} 目录下. 下面我们以以下python的2线程程序为例,详细说一下Linux系统下如何查看 1,某个进程有几个线程 2,某个进程 ...

  2. 如何查看JAVA某个进程下的线程

    微信搜索:"二十同学" 公众号,欢迎关注一条不一样的成长之路 jps -lvm jps -lvm 用于查看当前机器上运行的java进程. 可以看到所有运行的java进程都列出来了 ...

  3. 如何查询一个进程下面的线程数(进程和线程区别)

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一.对比进程和线程 1)两者概念 -  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程 ...

  4. linux里查看最耗CPU的线程

    1.top后按c查看最耗cpu的进程,得到pid 2.top -Hp pid 查看该进程里的线程资源使用情况,找到最耗资源的线程的pid 3.jstack pid来查看进程的各个线程栈,注意这里的pi ...

  5. java 进程 线程数量_如何查询一个进程下面的线程数(进程和线程区别)

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一.对比进程和线程 1)两者概念 -  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程 ...

  6. 查询一个进程下面的线程及正在运行的线程

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一.对比进程和线程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

  7. 分析占用了大量 CPU 处理时间的是Java 进程中哪个线程

    为什么80%的码农都做不了架构师?>>>    下面是详细步骤: 1. 首先确定进程的 ID ,可以使用 jps -v 或者 top 命令直接查看 2. 查看该进程中哪个线程占用大量 ...

  8. linux父进程和子进程查看,linux查看父子进程

    python多进程代码 test.py #coding=utf-8 import multiprocessing import time def func(msg): print "msg: ...

  9. pidstat_Linux查看某个进程的磁盘IO读写情况 pidstat

    一.现象 1)钉钉告警不断,告警如下CPU使用达到100% 普罗米修斯监控 2)查看数据库,没有发现比平时同一时段,业务量的增加.但是,数据库显示latch free等告警,验证了CPU使用过高导致. ...

最新文章

  1. springboot设置文件上传大小(tomcat默认1M)
  2. c语言课程设计怎么做,C语言课程设计————写下流程图! 谢谢
  3. win8.1计算机开启远程桌面连接不上,启动Win8.1远程桌面不得不知的方案
  4. Visual computing——概述
  5. 苏大计算机学院在哪,苏州大学和扬州大学都位于江苏,这两所大学,哪一所的实力更强?...
  6. python subprocess阻塞
  7. 全选和全不选(管理员列表)----html文件
  8. IE8无法取得客户端完整路径的解决办法
  9. Selenium免密码登录学习的方法
  10. Ubuntu下常用软件介绍
  11. C语言结构体通过 scanf初始化,C语言结构体数组内带字符数组初始化和赋值
  12. 从微信跳转到appstore下载App
  13. Android网络通讯之Retrofit
  14. 解决白天黑夜模式切换导致Fragment崩溃问题
  15. 数字功放和模拟功放差异介绍
  16. 电信增值短信平台模块清单(sp用)
  17. Office2016、visio2016安装的注意事项
  18. 修改nz-select中的nz-option设置title属性展示内容。
  19. @Transactional注解怎么使用?
  20. guava学习:RangeSet

热门文章

  1. 西门子PLC的编程工具是什么?
  2. POJ 1966 枚举 + Dinic
  3. 网站地图(站点地图)详细介绍以及如何制作
  4. htons java_socket编程为什么需要htons(), ntohl(), ntohs(),htons() 函数
  5. 添加局域网无线打印机方法
  6. Go语言休眠sleep
  7. 查找:线性表的C语言代码实现(顺序查找、折半查找)
  8. 已解决java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long异常的正确
  9. C#专业项目实例开发
  10. QT Qthread中止回收