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://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: 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) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM