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)