Linux下查看线程数的几种方法汇总
Linux下查看线程数的几种方法汇总
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.Linux下查看某个进程的线程数量
pstree命令以树状图显示进程间的关系(display a tree of processes)。ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init进程。
1>.安装pstree命令行工具,包名为:“psmisc”
[root@yinzhengjie bin]# yum -y install psmisc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package psmisc.x86_64 :22.20-.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ====================================================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================================================
Installing:
psmisc x86_64 22.20-.el7 base k Transaction Summary
====================================================================================================================================================================
Install Package Total download size: k
Installed size: k
Downloading packages:
psmisc-22.20-.el7.x86_64.rpm | kB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : psmisc-22.20-.el7.x86_64 /
Verifying : psmisc-22.20-.el7.x86_64 / Installed:
psmisc.x86_64 :22.20-.el7 Complete!
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# yum -y install psmisc
2>.相关参数介绍
Usage: pstree [ -a ] [ -c ] [ -h | -H PID ] [ -l ] [ -n ] [ -p ] [ -g ] [ -u ]
[ -A | -G | -U ] [ PID | USER ]
pstree -V
Display a tree of processes. -a, --arguments 显示命令时候,并显示其参数的完整内容 -A, --ascii 各进程树之间的连接以ASCII码字符来连接 -c, --compact 取消同名兄弟进程的合并(默认会将同名的兄弟进程合并) -h, --highlight-all 突出当前进程及其祖先
-H PID, --highlight-pid=PID 突出这个过程和它的祖先 -g, --show-pgids 显示进程组ID; -G, --vt100 使用VT100线绘制字符 -l, --long 不要截断长线。 -n, --numeric-sort 用PID排序输出
-N type,
--ns-sort=type sort by namespace type (ipc, mnt, net, pid, user, uts) -p, --show-pids 同时列出每个进程的PID -s, --show-parents 显示选定过程的父母 -S, --ns-changes 显示命名空间转换
-u, --uid-changes 同时列出每个进程的所属账号名称 -U, --unicode 各进程树之间的连接以utf8字符来连接,某些终端可能会有错误 -V, --version 显示版本信息
-Z,
--security-context 显示SELinux的安全上下文 PID 从这个PID开始;默认值是1(init)。 USER 只显示在该用户的进程中的树
3>.案例1-显示进程之间的关系
[root@yinzhengjie bin]# pstree -apnh
systemd, --switched-root --system --deserialize
├─systemd-journal,
├─systemd-udevd,
├─lvmetad, -f
├─auditd,
│ └─{auditd},
├─irqbalance, --foreground
├─systemd-logind,
├─polkitd, --no-debug
│ ├─{polkitd},
│ ├─{polkitd},
│ ├─{polkitd},
│ ├─{polkitd},
│ └─{polkitd},
├─dbus-daemon, --system --address=systemd: --nofork --nopidfile --systemd-activation
├─NetworkManager, --no-daemon
│ ├─{NetworkManager},
│ └─{NetworkManager},
├─crond, -n
├─chronyd,
├─agetty, --noclear tty1 linux
├─sshd, -D
│ ├─sshd,
│ │ └─bash,
│ │ └─pstree, -apnh
│ └─sshd,
│ └─bash,
├─tuned, -Es /usr/sbin/tuned -l -P
│ ├─{tuned},
│ ├─{tuned},
│ ├─{tuned},
│ └─{tuned},
├─gmetad, -d
│ ├─{gmetad},
│ ├─{gmetad},
│ ├─{gmetad},
│ ├─{gmetad},
│ ├─{gmetad},
│ ├─{gmetad},
│ ├─{gmetad},
│ └─{gmetad},
├─httpd, -DFOREGROUND
│ ├─httpd, -DFOREGROUND
│ ├─httpd, -DFOREGROUND
│ ├─httpd, -DFOREGROUND
│ ├─httpd, -DFOREGROUND
│ └─httpd, -DFOREGROUND
├─rsyslogd, -n
│ ├─{rsyslogd},
│ └─{rsyslogd},
├─zabbix_agentd, -c /etc/zabbix/zabbix_agentd.conf
│ ├─zabbix_agentd,
│ ├─zabbix_agentd,
│ ├─zabbix_agentd,
│ ├─zabbix_agentd,
│ └─zabbix_agentd,
├─gmond,
│ └─{gmond},
└─java, -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp/soft/zk/bin/../build/classes:/soft/zk/bin/../build/lib/*.jar:/soft/zk/bin/../lib/
├─{java},2487
├─{java},2488
├─{java},2489
├─{java},2490
├─{java},2491
├─{java},2492
├─{java},2493
├─{java},2494
├─{java},2495
├─{java},2496
├─{java},2497
├─{java},2498
├─{java},2499
├─{java},2500
├─{java},2501
├─{java},2502
├─{java},2503
├─{java},2504
├─{java},2505
├─{java},2506
├─{java},2507
├─{java},2508
├─{java},2509
├─{java},2510
├─{java},2511
├─{java},2512
├─{java},2513
├─{java},2514
├─{java},2515
├─{java},2516
├─{java},2517
├─{java},2518
├─{java},2519
├─{java},2520
├─{java},2521
├─{java},2522
├─{java},2523
├─{java},2524
├─{java},2525
├─{java},2526
├─{java},2527
├─{java},2528
├─{java},2529
├─{java},2530
├─{java},2531
├─{java},2532
├─{java},2534
├─{java},2535
├─{java},2536
├─{java},2537
├─{java},2538
├─{java},2539
├─{java},2540
├─{java},2541
├─{java},2542
├─{java},2543
├─{java},2544
├─{java},2545
├─{java},2546
├─{java},2547
├─{java},2548
└─{java},2549
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree -apnh
4>.案例2-以树状图显示进程,还显示进程PID
[root@yinzhengjie bin]# pstree -p
systemd()─┬─NetworkManager()─┬─{NetworkManager}()
│ └─{NetworkManager}()
├─agetty()
├─auditd()───{auditd}()
├─chronyd()
├─crond()
├─dbus-daemon()
├─gmetad()─┬─{gmetad}()
│ ├─{gmetad}()
│ ├─{gmetad}()
│ ├─{gmetad}()
│ ├─{gmetad}()
│ ├─{gmetad}()
│ ├─{gmetad}()
│ └─{gmetad}()
├─gmond()───{gmond}()
├─httpd()─┬─httpd()
│ ├─httpd()
│ ├─httpd()
│ ├─httpd()
│ └─httpd()
├─irqbalance()
├─java()─┬─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ ├─{java}()
│ └─{java}()
├─lvmetad()
├─polkitd()─┬─{polkitd}()
│ ├─{polkitd}()
│ ├─{polkitd}()
│ ├─{polkitd}()
│ └─{polkitd}()
├─rsyslogd()─┬─{rsyslogd}()
│ └─{rsyslogd}()
├─sshd()─┬─sshd()───bash()───pstree()
│ └─sshd()───bash()
├─systemd-journal()
├─systemd-logind()
├─systemd-udevd()
├─tuned()─┬─{tuned}()
│ ├─{tuned}()
│ ├─{tuned}()
│ └─{tuned}()
└─zabbix_agentd()─┬─zabbix_agentd()
├─zabbix_agentd()
├─zabbix_agentd()
├─zabbix_agentd()
└─zabbix_agentd()
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree -p
5>.案例3-显示命令和其完整参数
[root@yinzhengjie bin]# pstree -a
systemd --switched-root --system --deserialize
├─NetworkManager --no-daemon
│ └─*[{NetworkManager}]
├─agetty --noclear tty1 linux
├─auditd
│ └─{auditd}
├─chronyd
├─crond -n
├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
├─gmetad -d
│ └─*[{gmetad}]
├─gmond
│ └─{gmond}
├─httpd -DFOREGROUND
│ ├─httpd -DFOREGROUND
│ ├─httpd -DFOREGROUND
│ ├─httpd -DFOREGROUND
│ ├─httpd -DFOREGROUND
│ └─httpd -DFOREGROUND
├─irqbalance --foreground
├─java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp/soft/zk/bin/../build/classes:/soft/zk/bin/../build/lib/*.jar:/soft/zk/bin/../lib/
│ └─62*[{java}]
├─lvmetad -f
├─polkitd --no-debug
│ └─5*[{polkitd}]
├─rsyslogd -n
│ └─2*[{rsyslogd}]
├─sshd -D
│ ├─sshd
│ │ └─bash
│ │ └─pstree -a
│ └─sshd
│ └─bash
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned -Es /usr/sbin/tuned -l -P
│ └─4*[{tuned}]
└─zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
├─zabbix_agentd
├─zabbix_agentd
├─zabbix_agentd
├─zabbix_agentd
└─zabbix_agentd
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree -a
6>.案例4-取消合并,默认会将同名的兄弟进程合并,-c取消合并,分开显示
[root@yinzhengjie bin]# pstree -c
systemd─┬─NetworkManager─┬─{NetworkManager}
│ └─{NetworkManager}
├─agetty
├─auditd───{auditd}
├─chronyd
├─crond
├─dbus-daemon
├─gmetad─┬─{gmetad}
│ ├─{gmetad}
│ ├─{gmetad}
│ ├─{gmetad}
│ ├─{gmetad}
│ ├─{gmetad}
│ ├─{gmetad}
│ └─{gmetad}
├─gmond───{gmond}
├─httpd─┬─httpd
│ ├─httpd
│ ├─httpd
│ ├─httpd
│ └─httpd
├─irqbalance
├─java─┬─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ ├─{java}
│ └─{java}
├─lvmetad
├─polkitd─┬─{polkitd}
│ ├─{polkitd}
│ ├─{polkitd}
│ ├─{polkitd}
│ └─{polkitd}
├─rsyslogd─┬─{rsyslogd}
│ └─{rsyslogd}
├─sshd─┬─sshd───bash───pstree
│ └─sshd───bash
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned─┬─{tuned}
│ ├─{tuned}
│ ├─{tuned}
│ └─{tuned}
└─zabbix_agentd─┬─zabbix_agentd
├─zabbix_agentd
├─zabbix_agentd
├─zabbix_agentd
└─zabbix_agentd
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree -c
7>.案例5-查询zookeeper进程打开的线程数
[root@yinzhengjie bin]# jps
QuorumPeerMain
Jps
[root@yinzhengjie bin]#
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree -p `jps | grep QuorumPeerMain | awk '{print $1}'` | wc -l [root@yinzhengjie bin]#
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree -p | wc -l [root@yinzhengjie bin]#
总结:
通过pstree清晰的看到进程的父子关系,但是进程状态查看,还是需要ps、top等命令。pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁。
推荐学习的博客:http://www.runoob.com/linux/linux-command-manual.html
二.使用top命令查看
1>.使用pstree命令查看"ResourceManager"进程打开的线程数
[root@yinzhengjie ~]# jps
Jps
ResourceManager
JobTracker
NameNode
Bootstrap
DFSZKFailoverController
HistoryServer
HistoryServer
JobHistoryServer
[root@yinzhengjie ~]#
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# pstree -p | wc -l [root@yinzhengjie ~]#
2>.使用top命令查看“ResourceManager”打开的进程数
[root@yinzhengjie ~]# top -H -p
top - :: up days, :, users, load average: 0.02, 0.06, 0.05
Threads: total, running, sleeping, stopped, zombie
%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : total, free, used, buff/cache
KiB Swap: total, free, used. avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
yarn S 0.3 3.4 :15.83 java
yarn S 0.0 3.4 :00.25 java
yarn S 0.0 3.4 :03.12 java
yarn S 0.0 3.4 :01.65 java
yarn S 0.0 3.4 :01.65 java
yarn S 0.0 3.4 :01.69 java
yarn S 0.0 3.4 :01.66 java
yarn S 0.0 3.4 :01.70 java
yarn S 0.0 3.4 :01.69 java
yarn S 0.0 3.4 :01.67 java
yarn S 0.0 3.4 :01.68 java
yarn S 0.0 3.4 :01.68 java
yarn S 0.0 3.4 :01.67 java
yarn S 0.0 3.4 :01.70 java
yarn S 0.0 3.4 :01.68 java
yarn S 0.0 3.4 :01.66 java
yarn S 0.0 3.4 :01.67 java
yarn S 0.0 3.4 :01.69 java
yarn S 0.0 3.4 :00.00 java
yarn S 0.0 3.4 :00.00 java
yarn S 0.0 3.4 :00.00 java
yarn S 0.0 3.4 :00.00 java
yarn S 0.0 3.4 :15.73 java
yarn S 0.0 3.4 :59.54 java
yarn S 0.0 3.4 :00.06 java
yarn S 0.0 3.4 :00.04 java
yarn S 0.0 3.4 :00.00 java
yarn S 0.0 3.4 :00.00 java
yarn S 0.0 3.4 :08.24 java
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# top -H -p 10339
三.直接去“/proc”对应PID的status目录查看
由于在Linux操作系统中,正在运行的程序都会在/proc这个目录下存放运行时文件的状态信息,因此我们在这个目录下,找到对应的进程ID就可以查看到该进程打开的线程数。当然还有一些其他的详细信息都在这个目录下存放着。
[root@yinzhengjie ~]# cat /proc//status
Name: java
Umask:
State: S (sleeping)
Tgid:
Ngid:
Pid:
PPid:
TracerPid:
Uid:
Gid:
FDSize:
Groups:
VmPeak: kB
VmSize: kB
VmLck: kB
VmPin: kB
VmHWM: kB
VmRSS: kB
RssAnon: kB
RssFile: kB
RssShmem: kB
VmData: kB
VmStk: kB
VmExe: kB
VmLib: kB
VmPTE: kB
VmSwap: kB
Threads:
SigQ: /
SigPnd:
ShdPnd:
SigBlk:
SigIgn:
SigCgt: 2000000181005ccf
CapInh:
CapPrm:
CapEff:
CapBnd: 0000001fffffffff
CapAmb:
Seccomp:
Cpus_allowed: fffff
Cpus_allowed_list: -
Mems_allowed: ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Mems_allowed_list: -
voluntary_ctxt_switches:
nonvoluntary_ctxt_switches:
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# cat /proc/10339/status
四.直接去“/proc”对应PID的task目录查看
[root@yinzhengjie ~]# jps
Jps
ResourceManager
JobTracker
NameNode
Bootstrap
DFSZKFailoverController
HistoryServer
HistoryServer
JobHistoryServer
[root@yinzhengjie ~]#
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# pstree -p | wc -l [root@yinzhengjie ~]#
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# ll /proc//task/ | wc -l [root@yinzhengjie ~]#
[root@yinzhengjie ~]#
Linux下查看线程数的几种方法汇总的更多相关文章
- linux下查看线程数的几种方法
1. cat /proc/${pid}/status 2.pstree -p ${pid} 3.top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid} t ...
- Linux环境下查看线程数的几种方法
1.cat /proc/${pid}/status 2.pstree -p ${pid} 3.top -p ${pid} 再按H,或者直接输入 top -bH -d 3 -p ${pid} top ...
- [转]Linux环境下查看线程数的几种方法
1.cat /proc/${pid}/status 2.pstree -p ${pid} 3.top -p ${pid} 再按H,或者直接输入 top -bH -d 3 -p ${pid} top ...
- Linux下查看磁盘挂载的几种方法
Linux下查看磁盘挂载的几种方法 第一种方法:df命令 # df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtm ...
- Linux下查看磁盘挂载的三种方法
Linux下查看磁盘挂载的三种方法 2009-06-05 23:17 好久没有更新日志了,呵呵.不是没有要写的东东.实在抽不出时间来写,要准备公司的考试呢,C++考试.已经有七个月没有写C++代码了, ...
- linux下查看mysql版本的四种方法
Linux查看MySQL版本的四种方法 1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看 select vers ...
- linux 下查看系统内存使用情况的方法
在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux 下查看内存使用情况的free命令: [root@scs ...
- [转] linux 下查看一个进程运行路径的方法
http://blog.csdn.net/brioxu/article/details/5104736 在linux下查看进程大家都会想到用 ps -ef|grep XXX ps -aux | hea ...
- linux下查看进城(ps)的方法 与 杀死进程(kill)的N种方法
PS查看进程 inux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必 ...
随机推荐
- mvc HTML转Excel身份证后三位变成0
@{ var style = "vnd.ms-excel.numberformat:@"; } //HTML <td style=@style><span> ...
- Java中的getGenericSuperclass的基本用法
通过getGenericSuperclass方法可以获取当前对象的直接超类的Type,使用该方法可以获取到泛型T的具体类型 package cn.tzz.lang.clazz; public clas ...
- [十]SpringBoot 之 普通类获取Spring容器中的bean
我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用 ...
- Go语言的接口
一.接口的定义和好处 我们都知道接口给类提供了一种多态的机制,什么是多态,多态就是系统根据类型的具体实现完成不同的行为. 以下代码简单说明了接口的作用 package main import ( &q ...
- 洛谷P1119灾后重建
题目 做一个替我们首先要明确一下数据范围,n<=200,说明n^3的算法是可以过得,而且这个题很明显是一个图论题, 所以我们很容易想到这个题可以用folyd, 但是我在做这个题的时候因为没有深刻 ...
- Linux CAT与ECHO命令详解
Linux CAT与ECHO命令详解 cat命令是Linux下的一个文本输出命令,通常是用于观看某个文件的内容的: cat主要有三大功能: 1.一次显示整个文件. $ cat filename 2.从 ...
- ZOJ 3846 GCD Reduce//水啊水啊水啊水
GCD Reduce Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge You are given a sequ ...
- W10笔记本电脑弄成WIFI
用网线连接的笔记本弄成WIFI供手机上网.以前是买了一个随身 WIFI,可以当网卡使用.后来使用命令 // 建立WIFI netsh wlan set hostednetwork mode=allow ...
- hdu 3374 String Problem(kmp+最小表示法)
Problem Description Give you a string with length N, you can generate N strings by left shifts. For ...
- CodeForces - 95B(DFS)
题目链接:http://codeforces.com/problemset/problem/95/B 题目大意:给你一个正整数n (1 ≤ n ≤ 10100000),求不大小于它的超级幸运数字(超级 ...