【调试】linux top查看线程/进程
目录
作者:bandaoyu,原文地址:https://blog.csdn.net/bandaoyu/article/details/113697346
即看即用
查看进程的线程
1、查看某个进程的线程
ps -T -p <pid>
或
top -H -p <pid>
通过名字
top -H -p $(pidof name)
top -H -p $(pgrep -f name)
linux命令获取进程pid:https://blog.csdn.net/weixin_39983912/article/details/111801137
只查某几个进程的信息
top -p 21538,31117,31116,31115,31114
2、查看所有的线程
top -H
top翻页:Shift+< 上翻 Shift+> 下翻
查看主线程和新线程的关系
pstree -p 主线程id (主线程ID 就是进程ID?)
根据进程名字进行查询:
# pstree -p `ps -e | grep server | awk '{print $1}'`
# pstree -p `ps -e | grep server | awk '{print $1}'` | wc -l
查找线程的父进程
查到瓶颈线程的ID是2256592,查找其父进程
pstree -UApu|grep 2256592 -A 5 -B 10
-A 5 -B 10 表示取匹配行的前面10行和后面5行
[root@rdma59 ]# pstree -UApu|grep 2256592 -A 5 -B 10
|-ceph-mon(2256511,ceph)-+-{ceph-mon}(2256541)
| |-{ceph-mon}(2256556)
| |-{ceph-mon}(2256557)
| |-{ceph-mon}(2256558)
| |-{ceph-mon}(2256563)
| |-{ceph-mon}(2256564)
| |-{ceph-mon}(2256565)
| |-{ceph-mon}(2256589)
| |-{ceph-mon}(2256590)
| |-{ceph-mon}(2256591)
| |-{ceph-mon}(2256592)
| |-{ceph-mon}(2256593)
| |-{ceph-mon}(2256594)
| |-{ceph-mon}(2256595)
| |-{ceph-mon}(2256596)
| |-{ceph-mon}(2256597)
可以看出,线程2256592 由ceph-mon(2256511)创建
详细说明
技术|Linux有问必答:Linux上如何查看某个进程的线程
方法一:PS
在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程。
$ ps -T -p <pid>
“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。
你可以用 ps -eLf |grep XXX 来查看程序运行所产生的线程情况; 也可以用 ps axms | grep XXX;
方法二: Top
top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。
$ top -H
要让top输出某个特定进程<pid>并检查该进程内运行的线程状况:
$ top -H -p <pid>
方法三: Htop
一个对用户更加友好的方式是,通过htop查看单个进程的线程,它是一个基于ncurses的交互进程查看器。该程序允许你在树状视图中监控单个独立线程。
要在htop中启用线程查看,请开启htop,然后按<F2>来进入htop的设置菜单。选择“设置”栏下面的“显示选项”,然后开启“树状视图”和“显示自定义线程名”选项。按<F10>退出设置。
现在,你就会看到下面这样单个进程的线程视图。
via: How to view threads of a process on Linux
top、iftop、iotop、htop、atop工具区别
top、iftop、iotop、htop、atop工具:https://blog.csdn.net/bandaoyu/article/details/95407670
pstree命令详解
pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁
#pstree
几个重要的参数:
-A: 各进程树之间的连接以ASCII码字符来连接
-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误
-p:同时列出每个进程的PID
-u: 同时列出每个进程的所属账号名称:
例子:
#pstree -up
可以看到所有的进程都是依附在systemd这个进程下面,它的进程PID是1,因为它是由Linux内核主动调用的一个进程。
可以从中看出来进程所属的用户为dlj,每个进程的pid
而且,25707这个进程有5个子进程,分别为25778,25779,25780,25782,25787
25778这个进程也有几个子线程,分别为,25781,25783,25784,27547,27548