当前位置: 首页 > news >正文

Linux有问必答:Linux上如何查看某个进程的线程


原创:LCTT https://linux.cn/article-5633-1.html 译者: GOLinux
本文地址:https://linux.cn/article-5633-1.html
2015-6-15 15:44 收藏: 9
问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后监控其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。

线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发执行时成为一个高效的机制。

在Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”。然后,各个线程会获得其自身的线程ID(TID)。对于Linux内核调度器而言,线程不过是恰好共享特定资源的标准的进程而已。经典的命令行工具,如ps或top,都可以用来显示线程级别的信息,只是默认情况下它们显示进程级别的信息。

这里提供了在Linux上显示某个进程的线程的几种方式。

方法一:PS

在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程。

$ ps -T -p <pid>

“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。

方法二: 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: http://ask.xmodulo.com/view-threads-process-linux.html

作者:Dan Nanni 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

相关文章:

  • C#动态调用WCF
  • ora_01810:格式代码出现两次
  • 前段
  • 用Redis存储Tomcat集群的Session
  • XForms - 更强大的Form
  • Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?
  • PHP SPL笔记
  • 三十六计阅读手记
  • PAT (Advanced Level) 1112. Stucked Keyboard (20)
  • SVN代码丢失惊魂
  • 【jacob word】使用jacob,合并多个word为一个word文件
  • string、wstring、cstring、 char、 tchar、int、dword转换方法(转)
  • 对动画对概念和动画实现的思想的理解
  • pomelo连接redis
  • 推荐几款软件界面模型设计工具
  • 【Leetcode】101. 对称二叉树
  • es6要点
  • HashMap ConcurrentHashMap
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Laravel 中的一个后期静态绑定
  • php的插入排序,通过双层for循环
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Vim Clutch | 面向脚踏板编程……
  • 初识MongoDB分片
  • 聊聊flink的TableFactory
  • 嵌入式文件系统
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 微信小程序--------语音识别(前端自己也能玩)
  • ​ArcGIS Pro 如何批量删除字段
  • ​如何在iOS手机上查看应用日志
  • (C语言)球球大作战
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十一)手动添加用户和文件的特殊权限
  • (一)SpringBoot3---尚硅谷总结
  • (一)基于IDEA的JAVA基础1
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net core 连接数据库,通过数据库生成Modell
  • .Net IOC框架入门之一 Unity
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 中的轻量级线程安全
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .ui文件相关
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • [20170705]diff比较执行结果的内容.txt
  • [Angular 基础] - 表单:响应式表单
  • [C]整形提升(转载)
  • [docker] Docker容器服务更新与发现之consul
  • [HDU 3555] Bomb [数位DP]