查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~]#


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部