linux 如何看某个进程有多少线程

linux 如何看某个进程有多少线程,第1张

1、 cat /proc/${pid}/status 2、pstree -p ${pid} 3、top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid} top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程

可以使用top命令查看一个进程的各个线程分别run在哪个processor上

在默认配置下不显示线程信息,需要进入Top后按shift+H,打开线程显示。

另外,如果没有P列,还需要按“f”,按“j”,添加,这一列显示的数字就是这个线程上次run的processor id。

如果同一个进程名字有多个出现,说明进程有多个线程,几个线程就是线程数量了。

threading模块有active_count()方法,它是获取当前激活的线程数量。用法很简单

import threading

threadingactive_count()

root@localhost:~# pstree --help

pstree: unrecognized option '--help'

Usage: pstree [ -a ] [ -c ] [ -h | -H PID ] [ -l ] [ -n ] [ -p ] [ -g ] [ -u ]

[ -A | -G | -U ] [ PID | USER ]

pstree -V

Display a tree of processes

-a, --arguments show command line arguments

-A, --ascii use ASCII line drawing characters

-c, --compact don't compact identical subtrees

-h, --highlight-all highlight current process and its ancestors

-H PID,

--highlight-pid=PID highlight this process and its ancestors

-g, --show-pgids show process group ids; implies -c

-G, --vt100 use VT100 line drawing characters

-l, --long don't truncate long lines

-n, --numeric-sort sort output by PID

-p, --show-pids show PIDs; implies -c

-s, --show-parents show parents of the selected process

-u, --uid-changes show uid transitions

-U, --unicode use UTF-8 (Unicode) line drawing characters

-V, --version display version information

PID start at this PID; default is 1 (init)

USER show only trees rooted at processes of this user

-p, --show-pids show PIDs; implies -c

-p 接进程pid,就可以显示子进程

root@localhost:~# pstree -p 1464

php5-fpm(1464)─┬─php5-fpm(1467)

├─php5-fpm(1468)

├─php5-fpm(1469)

├─php5-fpm(1470)

├─php5-fpm(1471)

├─php5-fpm(1472)

├─php5-fpm(1473)

├─php5-fpm(1474)

├─php5-fpm(1475)

├─php5-fpm(1476)

├─php5-fpm(4377)

├─php5-fpm(7805)

├─php5-fpm(8290)

└─php5-fpm(22279)

GetThreadId 根据线程句柄得到线程ID。

GetWindowThreadProcessId ,根据窗口句柄得到此窗口所在线程的ID(也同时得到进程的ID)

OpenThread,能根据ID得到线程的句柄。

理论上来说,如果你全用threadgroup来跑线程的话,有个叫enumerate的方法可以得到该threadgroup下所有active的(也就是你说的在工作的)线程以及子线程,但程序里面不一定是把线程放threadgroup里面的,有可能有人自己new一个出来run或者别的,所以不能完全依靠这个办法。我目前想到的办法,貌似得弄个全局的counter,开个守护线程,让这个线程去数监控所有线程的状态,依照线程是否Active去加减这个counter。

还有个懒点的,你看windows的taskmanager(假设你在win平台上的话),里面有一个column叫做thread count的,我没试过到底准不准,不过这个最省事了,右键点出来一看就知道了。

在LINUX上可以使用kill -3 pid > threadinfo来取得当前JVM线程的信息;

jstack 这个是用来查看jvm当前的thread dump的。可以看到当前Jvm里面的线程状况。

这个对于查找blocked线程比较有意义;

三种方法:1。 使用top命令,具体用法是 top -H 加上这个选项,top的每一行就不是显示一个进程,而是一个线程。 2。 使用ps命令,具体用法是 ps -xH 这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。

以上就是关于linux 如何看某个进程有多少线程全部的内容,包括:linux 如何看某个进程有多少线程、查看进程运行在哪个CORE上以及进程下线程数量、python 查看进程 多少线程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9521534.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存