• 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) 
  • 相关阅读:
    【记录】ASP.NET MVC MapRoute .htm 不起作用
    【记录】ASP.NET MVC JsonResult JsonRequestBehavior AllowGet
    爱与恨的抉择:ASP.NET 5+EntityFramework 7
    EntityFramework 7 Linq Contains In 奇怪问题
    EntityFramework 7 Left Join Where is error(Test record)
    EntityFramework 7 Left Join Where Select 奇怪问题
    EntityFramework 7 Join Count LongCount 奇怪问题
    EntityFramework 7 OrderBy Skip Take-计算排序分页 SQL 翻译
    EntityFramework 7 如何查看执行的 SQL 代码?
    写点东西来吐槽一下自己,真是无语了。
  • 原文地址:https://www.cnblogs.com/architectforest/p/12841981.html
Copyright © 2020-2023  润新知