一,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)