在linux下查看某个进程下有哪些线程的方法
前言
在写浅析JS并发模型和事件循环这篇文章的时候,需要去核对nodejs进程下有哪些线程,于是总结了这篇文章,列举几个在linux下查看进程下有哪些线程的方法。顺便普及一下线程的含义:
线程在当代的操作系统中对并行执行的编程的一个抽象。当线程在一个进程中被创建出来之后,这些线程共享了很多资源(比如内存地址空间、打开的文件资源等),这样的话就很最小化forking的极限并且避免了昂贵的进程间通信操作。这些优点都让线程成为协程处理的一个高效的机制
在Linux中,在同一个进程中创建的线程(也可以成为轻量级进程(LWP))都有相同的“线程组ID”,该ID和进程的PID是一致的。每一个线程都有自己的线程ID(TID)。对于Linux的内核调度器来说,线程和标准的进程没有多大的区别。下面我们将列举几种方法来线程进程下的线程。
1、方法一
- 找到你想查找的进程ID(PID),比如这里我想查找nodejs,于是有:
ps -ef | grep node
,找到的PID如下: - 使用这个PID去查找线程,命令有:
ps -T -p 22222
,线程列表如下:
root on frontlinguang in ~
$ ps -ef | grep node
root 16498 5877 0 19:07 pts/1 00:00:00 node
root 18020 23209 0 19:10 pts/4 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn node
root on frontlinguang in ~
$ ps -T -p 16498
PID SPID TTY TIME CMD
16498 16498 pts/1 00:00:00 node
16498 16502 pts/1 00:00:00 node
16498 16503 pts/1 00:00:00 V8 WorkerThread
16498 16504 pts/1 00:00:00 V8 WorkerThread
16498 16505 pts/1 00:00:00 V8 WorkerThread
16498 16506 pts/1 00:00:00 V8 WorkerThread
16498 16512 pts/1 00:00:00 node
16498 16513 pts/1 00:00:00 node
16498 16514 pts/1 00:00:00 node
16498 16515 pts/1 00:00:00 node
Tips:"-T" 选项是使能线程视图,The "SID" column represents thread IDs, and "CMD" column shows thread names.
2、方法二
用过linux的都会知道有个top命令,但是我们一般都只看到进程的实时数据,如果想看线程,那么可以加个-H
选项,如图:
Tips:在Top的命令执行的时候,可以通过按H
键来切换打开或者关闭线程视图。
如果只想看某个进程的线程实时数据,可以添加-p
选项,后面跟上你想查看的进程ID,如图:
3、方法三
Linux中还有一个更加人性化的查看方式--htop
命令。这是一个基于ncurse
的交互式进程查看器。该程序允许你在树图中监控某个线程。
为了使能线程视图,执行完htop
之后,按F2
键进入设置菜单,如图:
选择"Display option",然后打开"Three view"和"Show custom thread names"选项,如图:
最后按F10
保存退出。
现在就可以看到线程视图了:
公众号关注一波~
网站源码:linxiaowu66 · 豆米的博客
Follow:linxiaowu66 · Github
关于评论和留言
如果对本文 在linux下查看某个进程下有哪些线程的方法 的内容有疑问,请在下面的评论系统中留言,谢谢。