centos8:linux平台查看线程(ps/pstree/top)

一,ps/pstree/top命令所属的rpm包

pstree所属的包

[root@blog ~]# whereis pstree
pstree: /usr/bin/pstree /usr/bin/pstree.x11 /usr/share/man/man1/pstree.1.gz
[root@blog
~]# rpm -qf /usr/bin/pstree psmisc-23.1-3.el8.x86_64

 

ps所属的包

[root@blog ~]# whereis ps
ps: /usr/bin/ps /usr/share/man/man1/ps.1.gz /usr/share/man/man1p/ps.1p.gz
[root@blog
~]# rpm -qf /usr/bin/ps procps-ng-3.3.15-1.el8.x86_64

 

top所属的包

[root@blog ~]# whereis top
top: /usr/bin/top /usr/share/man/man1/top.1.gz

[root@blog ~]# rpm -qf /usr/bin/top
procps-ng-3.3.15-1.el8.x86_64

说明:这几个命令都是系统内置的,

如果误删除的话可以用dnf安装

 

说明:刘宏缔的架构森林是一个专注架构的博客,

网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/22/centos8linux-zha-kan-xian-cheng-pspstreetop/

         对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

 

二,用ps查看线程

1,用-T显示线程

#-T:Show threads, possibly with SPID column:显示线程,可能会显示SPID列

#-p: 指定进程id

[root@blog ~]# ps -T -p 8240
  PID  SPID TTY          TIME CMD
 8240  8240 ?        00:21:58 redis-server
 8240  8241 ?        00:00:00 redis-server
 8240  8243 ?        00:00:00 redis-server
 8240  8244 ?        00:00:00 redis-server

 

2,线程id:SPID和LWP的区别

说明:显示线程的几个参数:

THREAD DISPLAY
       H      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.

-L和-T的区别:字段名不同

一个是SPID

一个是LWP

LWP:轻量级进程(线程)的ID号。

NLWP:进程中的线程数量。 

两者都是线程id

 

可以参考ps的手册:

[root@blog ~]# man ps

其中对于LWP的描述:

...
 lwp         LWP       light weight process (thread) ID of the dispatchable entity (alias spid, tid)
...

说明: spid,tid,lwp都是线程id

SPID和LWP两者的区别在于:用-L显示LWP时能同时显示NLWP

 

3,用-L显示线程:

#-L:Show threads, possibly with LWP and NLWP columns

#-e:Select all processes:列出所有进程

#-f:Do full-format listing:显示完整的格式:

          不加这个参数会有一些字段不显示,

          增加此参数后字段显示完整

[root@blog ~]# ps -efL
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
root      8240     1  8240  0    4 Mar11 ?        00:21:58 /usr/local/soft/redis5/bin/redis-server 127.0.0.1:6379
root      8240     1  8241  0    4 Mar11 ?        00:00:00 /usr/local/soft/redis5/bin/redis-server 127.0.0.1:6379
root      8240     1  8243  0    4 Mar11 ?        00:00:00 /usr/local/soft/redis5/bin/redis-server 127.0.0.1:6379
root      8240     1  8244  0    4 Mar11 ?        00:00:00 /usr/local/soft/redis5/bin/redis-server 127.0.0.1:6379

可以看到NLWP这个数量是把主线程也计算在内了

 

三,用pstree查看线程

说明:pstree默认就打开线程的显示

#-p:显示进程id

[root@blog ~]# pstree -p

说明:加了-p参数,会把线程列出来,

否则只显示进程下线程的数量

...
           ├─redis-server(8240)─┬─{redis-server}(8241)
           │                    ├─{redis-server}(8243)
           │                    └─{redis-server}(8244)
...

 

#查看指定的进程id

[root@blog ~]# pstree -p 8240
redis-server(8240)─┬─{redis-server}(8241)
                   ├─{redis-server}(8243)
                   └─{redis-server}(8244)

 

不想看线程也可以关掉

#-T: 关掉线程的显示

[root@blog ~]# pstree -T -p

 

四,用top查看线程

#-H  :Threads-mode operation 打开线程的显示

[root@blog ~]# top -H

说明:top启动后也可以用H来打开关闭线程模式

 

五,查看centos的版本:

[root@blog ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 

 

posted @ 2020-05-07 11:49  刘宏缔的架构森林  阅读(2662)  评论(0编辑  收藏  举报