linux 下使用top命令 top与top -H -p pid的区别联系

本文详细介绍了Linux环境下top命令的使用方法,包括如何查看进程及线程的CPU占用情况,并提供了使用top命令的不同选项来获取更详细信息的方法。此外还介绍了如何利用gstack/pstack工具进一步定位到代码级的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 top命令

1.1 查看进程使用cpu的情况

使用top命令

2.或者使用  top -p   pid ;如这里使用  top -p  2856

1.2 查看某个进程下线程的运行情况

1.2.1 方法1

ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu | grep 进程号

这里我们可以看到用户、进程号、父进程号、线程号、cpu占用总时长、cpu占用率、程序名。按照cpu的值进行了升序排列,最后一个即为占用cpu最高的线程,这样就可以找到对应线程号。

图中第4列就是线程号,第5列是cpu占用时长,第6列是cpu占用率。

排除进程2856的子进程,以及子进程下的线程,剩下就是进程2856下的直接线程。即图中圈红排除剩余的部分。等于 top -H  -p  pid 2856。

1.2.2 方法2

-H:开启线程模式   ;       -p:  进程号

1.使用  top -H -p   pid(具体的进程号)

查看该进程下所有线程占用CPU情况

结论:

1.使用此命令 top -H  -p  pid xxx  ;显示的pid 指的是【线程id】

2.在方法1中,排除进程2856的子进程,以及子进程下的线程,剩下就是进程2856下的直接线程。即图中圈红排除剩余的部分。等于 top -H  -p  pid 2856。

1.3 通过堆栈命令工具定位到代码行级别

1.命令:    gstack/pstack 进程号

        pstack是gstack的软连接而已。

2.pstack保存该进程的线程快照:根据命令下输出的线程id,查看体线程堆栈信息。

3.线程较多,我们可以指定线程重定向到一个文本文件: gstack 进程号 >gstack.txt,方便查看。这个文本文件里存放的就是线程号和调用堆栈一对一的映射。建议多抓取几次,如果每次都是一样的调用堆栈,基本可以确定就是那块代码出的问题了。‍‍https://www.cnblogs.com/ws007/p/13852055.html

1.4   总结

top 命令后:显示的pid 指的是进程id;

top -H -p pid  命令后, 显示的是线程id; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值