查linux有哪些task_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 installpsmisc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies-->Running transaction check---> Package psmisc.x86_64 0:22.20-15.el7 will be installed-->Finished Dependency Resolution
Dependencies Resolved====================================================================================================================================================================Package Arch Version Repository Size====================================================================================================================================================================Installing:
psmisc x86_6422.20-15.el7 base 141k
Transaction Summary====================================================================================================================================================================Install1Package
Total download size:141k
Installed size:475k
Downloading packages:
psmisc-22.20-15.el7.x86_64.rpm | 141 kB 00:00:00Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : psmisc-22.20-15.el7.x86_64 1/1Verifying : psmisc-22.20-15.el7.x86_64 1/1Installed:
psmisc.x86_640:22.20-15.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 sortby 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,1 --switched-root --system --deserialize 22├─systemd-journal,730├─systemd-udevd,758├─lvmetad,761 -f
├─auditd,1006│ └─{auditd},1007├─irqbalance,1040 --foreground
├─systemd-logind,1041├─polkitd,1043 --no-debug
│ ├─{polkitd},1048│ ├─{polkitd},1051│ ├─{polkitd},1053│ ├─{polkitd},1054│ └─{polkitd},1055├─dbus-daemon,1044 --system --address=systemd: --nofork --nopidfile --systemd-activation
├─NetworkManager,1046 --no-daemon
│ ├─{NetworkManager},1072│ └─{NetworkManager},1074├─crond,1047 -n
├─chronyd,1060├─agetty,1065 --noclear tty1 linux
├─sshd,1400 -D
│ ├─sshd,1985│ │ └─bash,1987│ │ └─pstree,1660 -apnh
│ └─sshd,2017│ └─bash,2019├─tuned,1401 -Es /usr/sbin/tuned -l -P
│ ├─{tuned},1706│ ├─{tuned},1707│ ├─{tuned},1708│ └─{tuned},1779├─gmetad,1402 -d 1│ ├─{gmetad},1403│ ├─{gmetad},1404│ ├─{gmetad},1405│ ├─{gmetad},1406│ ├─{gmetad},1407│ ├─{gmetad},1408│ ├─{gmetad},1409│ └─{gmetad},1410├─httpd,1411 -DFOREGROUND
│ ├─httpd,1757 -DFOREGROUND
│ ├─httpd,1758 -DFOREGROUND
│ ├─httpd,1759 -DFOREGROUND
│ ├─httpd,1760 -DFOREGROUND
│ └─httpd,1761 -DFOREGROUND
├─rsyslogd,1414 -n
│ ├─{rsyslogd},1421│ └─{rsyslogd},1427├─zabbix_agentd,1418 -c /etc/zabbix/zabbix_agentd.conf
│ ├─zabbix_agentd,1420│ ├─zabbix_agentd,1422│ ├─zabbix_agentd,1423│ ├─zabbix_agentd,1424│ └─zabbix_agentd,1425├─gmond,1851│ └─{gmond},1855└─java,2484 -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(1)─┬─NetworkManager(1046)─┬─{NetworkManager}(1072)
│ └─{NetworkManager}(1074)
├─agetty(1065)
├─auditd(1006)───{auditd}(1007)
├─chronyd(1060)
├─crond(1047)
├─dbus-daemon(1044)
├─gmetad(1402)─┬─{gmetad}(1403)
│ ├─{gmetad}(1404)
│ ├─{gmetad}(1405)
│ ├─{gmetad}(1406)
│ ├─{gmetad}(1407)
│ ├─{gmetad}(1408)
│ ├─{gmetad}(1409)
│ └─{gmetad}(1410)
├─gmond(1851)───{gmond}(1855)
├─httpd(1411)─┬─httpd(1757)
│ ├─httpd(1758)
│ ├─httpd(1759)
│ ├─httpd(1760)
│ └─httpd(1761)
├─irqbalance(1040)
├─java(2484)─┬─{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)
├─lvmetad(761)
├─polkitd(1043)─┬─{polkitd}(1048)
│ ├─{polkitd}(1051)
│ ├─{polkitd}(1053)
│ ├─{polkitd}(1054)
│ └─{polkitd}(1055)
├─rsyslogd(1414)─┬─{rsyslogd}(1421)
│ └─{rsyslogd}(1427)
├─sshd(1400)─┬─sshd(1985)───bash(1987)───pstree(2403)
│ └─sshd(2017)───bash(2019)
├─systemd-journal(730)
├─systemd-logind(1041)
├─systemd-udevd(758)
├─tuned(1401)─┬─{tuned}(1706)
│ ├─{tuned}(1707)
│ ├─{tuned}(1708)
│ └─{tuned}(1779)
└─zabbix_agentd(1418)─┬─zabbix_agentd(1420)
├─zabbix_agentd(1422)
├─zabbix_agentd(1423)
├─zabbix_agentd(1424)
└─zabbix_agentd(1425)
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree -p
5>.案例3-显示命令和其完整参数
[root@yinzhengjie bin]# pstree -a
systemd--switched-root --system --deserialize 22├─NetworkManager--no-daemon
│ └─2*[{NetworkManager}]
├─agetty--noclear tty1 linux
├─auditd
│ └─{auditd}
├─chronyd
├─crond-n
├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
├─gmetad-d 1│ └─8*[{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]# jps2484QuorumPeerMain5127Jps
[root@yinzhengjie bin]#
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree-p `jps | grep QuorumPeerMain | awk '{print $1}'` | wc -l62[root@yinzhengjie bin]#
[root@yinzhengjie bin]#
[root@yinzhengjie bin]# pstree-p 2484 | wc -l62[root@yinzhengjie bin]#
总结:
通过pstree清晰的看到进程的父子关系,但是进程状态查看,还是需要ps、top等命令。pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁。
推荐学习的博客:http://www.runoob.com/linux/linux-command-manual.html
二.使用top命令查看
1>.使用pstree命令查看"ResourceManager"进程打开的线程数
[root@yinzhengjie ~]# jps6178Jps10339ResourceManager10309JobTracker9462NameNode9464Bootstrap9466DFSZKFailoverController11052HistoryServer11054HistoryServer10367JobHistoryServer
[root@yinzhengjie~]#
[root@yinzhengjie~]#
[root@yinzhengjie~]# pstree -p 10339 | wc -l248[root@yinzhengjie~]#
2>.使用top命令查看“ResourceManager”打开的进程数
[root@yinzhengjie ~]# top -H -p 10339top- 01:38:45 up 7 days, 1:33, 3 users, load average: 0.02, 0.06, 0.05Threads:247 total, 0 running, 247 sleeping, 0 stopped, 0zombie%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0st
KiB Mem :18328176 total, 11610648 free, 5253524 used, 1464004 buff/cache
KiB Swap:9306108 total, 9306108 free, 0 used. 12658008avail Mem
PID USER PR NI VIRT RES SHR S%CPU %MEM TIME+COMMAND10791 yarn 20 0 3131380 622256 23808 S 0.3 3.4 0:15.83java10339 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.25java10608 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:03.12java10609 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.65java10610 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.65java10611 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.69java10612 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.66java10613 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.70java10614 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.69java10615 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.67java10616 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.68java10617 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.68java10618 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.67java10619 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.70java10620 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.68java10621 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.66java10622 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.67java10623 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:01.69java10624 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.00java10625 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.00java10626 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.00java10627 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.00java10628 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:15.73java10645 yarn 20 0 3131380 622256 23808 S 0.0 3.4 1:59.54java10651 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.06java10652 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.04java10656 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.00java10657 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:00.00java10658 yarn 20 0 3131380 622256 23808 S 0.0 3.4 0:08.24java
[root@yinzhengjie~]#
[root@yinzhengjie ~]# top -H -p 10339
三.直接去“/proc”对应PID的status目录查看
由于在Linux操作系统中,正在运行的程序都会在/proc这个目录下存放运行时文件的状态信息,因此我们在这个目录下,找到对应的进程ID就可以查看到该进程打开的线程数。当然还有一些其他的详细信息都在这个目录下存放着。
[root@yinzhengjie ~]# cat /proc/10339/status
Name: java
Umask:0022State: S (sleeping)
Tgid:10339Ngid:0Pid:10339PPid:8410TracerPid:0Uid:988 988 988 988Gid:985 985 985 985FDSize:512Groups:985 994VmPeak:3131384kB
VmSize:3131380kB
VmLck:0kB
VmPin:0kB
VmHWM:622300kB
VmRSS:622256kB
RssAnon:598448kB
RssFile:23808kB
RssShmem:0kB
VmData:2962116kB
VmStk:144kB
VmExe:4kB
VmLib:17152kB
VmPTE:1808kB
VmSwap:0kB
Threads:248SigQ:0/71498SigPnd:0000000000000000ShdPnd:0000000000000000SigBlk:0000000000000000SigIgn:0000000000000000SigCgt: 2000000181005ccf
CapInh:0000000000000000CapPrm:0000000000000000CapEff:0000000000000000CapBnd: 0000001fffffffff
CapAmb:0000000000000000Seccomp:0Cpus_allowed: fffff
Cpus_allowed_list:0-19Mems_allowed:00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003Mems_allowed_list:0-1voluntary_ctxt_switches:67nonvoluntary_ctxt_switches:19[root@yinzhengjie~]#
[root@yinzhengjie ~]# cat /proc/10339/status
四.直接去“/proc”对应PID的task目录查看
[root@yinzhengjie ~]# jps8704Jps10339ResourceManager10309JobTracker9462NameNode9464Bootstrap9466DFSZKFailoverController11052HistoryServer11054HistoryServer10367JobHistoryServer
[root@yinzhengjie~]#
[root@yinzhengjie~]#
[root@yinzhengjie~]# pstree -p 10339 | wc -l248[root@yinzhengjie~]#
[root@yinzhengjie~]#
[root@yinzhengjie~]# ll /proc/10339/task/ | wc -l248[root@yinzhengjie~]#
[root@yinzhengjie~]#
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
