Linux:如何查询进程下的线程

1、前言

进程和线程,是程序运行绕不开的话题,当我们想查询一个进程下存在哪些进程时,可以有哪些方法查询到,这是要思考的问题。

2、思路

2.1、是否有方法可查?

可想在linux中肯定有方法可以查询到进程下的线程,那么如何来查询?查询ps手册,发现可以通过参数-T查询到对应的进程下的线程:

# 查看对应手册
man ps

image-20240123222038191

当我们知道含线程的进程时哪一个进程的时候,可以使用-T参数通过PID来获取进程下的线程:

ps -ef | grep /usr/libexec/gvfsd

image-20240123223305183

或者直接使用pgrep通过进程名匹配进程pid:

pgrep gvfsd

image-20240123224010041

再通过进程pid即可查询到对应的线程:

ps -T -p 1300

image-20240123224139498

2.2、合并命令行

通过前面的两个指令,成功查询到了进程下含有哪些线程后,那么我们能否将指令合并成1条来简化指令执行呢?这里就可以使用到awk和xargs来对指令执行的参数进行传递了,合并后的指令如下:

ps -ef | grep gvfsd | awk '{print $2}' | xargs ps -T -p

在这段指令中,无需知道进程pid,直接将其作为参数传递给ps -T -p这一段指令,中间通过awk和xargs以及管道符|来传递参数。

分为下面三段:

# step 1:查询进程gvfsd详情,第二列为pid
ps -ef | grep gvfsd
# step 2:获取前一段指令执行结果第2列值
| awk '{print $2}'
# step 3:将awk获取到的值,作为参数传递给下一步的指令
# 正常执行ps -T -p 1300,这一段中的pid 1300,通过ps -ef | grep gvfsd | awk '{print $2}' | 执行的指令获取。
| xargs ps -T -p

image-20240123225254283

**注:**当要查询的进程名存在多项时,会将所有的线程结果查询出来。

image-20240123225525979

2.3、如何知道进程是否有线程?

通过上述的方法,能够成功的查询到指定进程下所含的线程,那么我们不知道对应进程全名,只是想知道哪些进程有线程时,如何来查询呢?linux中也提供了相应的指令来查询:

正常我们使用ps -ef查询指令会展示所有进程的全格式列表下的内容,但扩展-L参数一起使用时会增加NLWP(线程数)和LWP(线程ID)列:

ps -eLf

通过这个指令可以查询所有的进程详情,并将线程详情打印:

image-20240123225839123

当然,看到了这里,其实,还有第二种方法来查询指定进程名下的线程,没错,那就是将上面的指令结果通过grep来筛选:

ps -eLf | grep gvfsd

image-20240123230041790

到了这里,可以发现,ps -eLf | grep gvfsd执行的结果和ps -ef | grep gvfsd | awk '{print $2}' | xargs ps -T -p两种情况执行的结果差不多,无外乎,展示数据的多少,但是我们想查的数据都能够正确的获取到,具体使用哪种,全凭喜好。

3、总结

查询进程下的线程有两种方法:

3.1、方法一

awkxargs方法传递参数查询:

ps -ef | grep process_name | awk '{print $2}' | xargs ps -T -p

3.2、方法二

ps-L-f参数连用,增加打印线程信息:

ps -eLf | grep process_name

相关推荐

  1. 谈一谈Linux进程线

    2024-01-27 12:34:03       42 阅读
  2. Linux进程,协线

    2024-01-27 12:34:03       40 阅读
  3. Linux线理解(上)

    2024-01-27 12:34:03       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-27 12:34:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-27 12:34:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-27 12:34:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-27 12:34:03       20 阅读

热门阅读

  1. PostgreSQL(十一)coalesce() 函数的用法

    2024-01-27 12:34:03       31 阅读
  2. 构建支持 gpu 的 jupyterlab docker 镜像

    2024-01-27 12:34:03       35 阅读
  3. [go] 享元模式

    2024-01-27 12:34:03       37 阅读
  4. GBASE南大通用分享-linux centos下安装dokuwiki

    2024-01-27 12:34:03       26 阅读
  5. centos搭建ftp踩坑记录

    2024-01-27 12:34:03       26 阅读