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

Linux 中统计进程的线程数 | 查看进程的线程

注:本文为 “Linux 线程” 相关文章合辑。


在 Linux 中统计一个进程的线程数

作者:Dan Nanni 译者: LCTT struggling
| 2015-09-17 10:29

在 Linux 中一个程序在运行时会派生出多个线程。检查每个进程的线程数,有以下几种方法可以做到这一点。

方法一: /proc

proc 伪文件系统,它驻留在 /proc 目录,这是最简单的方法来查看任何活动进程的线程数。 /proc 目录以可读文本文件形式输出,提供现有进程和系统硬件相关的信息如 CPU、中断、内存、磁盘等等.

$ cat /proc/<pid>/status

上面的命令将显示进程 的详细信息,包括过程状态(例如,sleeping, running),父进程 PID,UID,GID,使用的文件描述符的数量,以及上下文切换的数量。输出也包括进程创建的总线程数如下所示。

Threads: <N>

例如,检查 PID 20571 进程的线程数:

$ cat /proc/20571/status

img

输出表明该进程有 28 个线程。

或者,你可以在 /proc//task 中简单的统计子目录的数量,如下所示。

$ ls /proc/<pid>/task | wc

这是因为,对于一个进程中创建的每个线程,在 /proc/<pid>/task 中会创建一个相应的目录,命名为其线程 ID。由此在 /proc/<pid>/task 中目录的总数表示在进程中线程的数目。

方法二: ps

如果你是功能强大的 ps 命令的忠实用户,这个命令也可以告诉你一个进程(用 “H” 选项)的线程数。下面的命令将输出进程的线程数。“h” 选项需要放在前面。

$ ps hH p <pid> | wc -l

如果你想监视一个进程的不同线程消耗的硬件资源(CPU & memory),请参阅下文。


Linux 上查看某个进程的线程

作者:Dan Nanni 译者: LCTT joeren
| 2015-06-15 15:44

: 程序在其内部创建并执行了多个线程,怎样才能在该程序创建线程后监控其中单个线程?
看到带有它们名称的单个线程详细情况(如,CPU / 内存使用率)。

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

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

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

方法一:PS

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

$ ps -T -p <pid>

img

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

方法二: Top

top 命令可以实时显示各个线程情况。要在 top 输出中开启线程查看,请调用 top 命令的 “-H” 选项,该选项会列出所有 Linux 线程。在 top 运行时,你也可以通过按 “H” 键将线程查看模式切换为开或关。

$ top -H

img

要让 top 输出某个特定进程 < pid > 并检查该进程内运行的线程状况:

$ top -H -p <pid>

img

方法三: Htop

一个对用户更加友好的方式是,通过 htop 查看单个进程的线程,它是一个基于 ncurses 的交互进程查看器。该程序允许你在树状视图中监控单个独立线程。

要在 htop 中启用线程查看,请开启 htop,然后按 < F2 > 来进入 htop 的设置菜单。选择 “设置” 栏下面的 “显示选项”,然后开启 “树状视图” 和 “显示自定义线程名” 选项。按 < F10 > 退出设置。

img

现在,你就会看到下面这样单个进程的线程视图。

img

via:

https://ask.xmodulo.com/number-of-threads-process-linux.html(链接已沉寂)
作者:Dan Nanni 译者:strugglingyouth 校对:wxy

https://ask.xmodulo.com/view-threads-process-linux.html(链接已沉寂)
作者:Dan Nanni 译者:GOLinux 校对:wxy

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

相关文章:

Linux 中统计进程的线程数 | 查看进程的线程

注&#xff1a;本文为 “Linux 线程” 相关文章合辑。 在 Linux 中统计一个进程的线程数 作者&#xff1a;Dan Nanni 译者&#xff1a; LCTT struggling | 2015-09-17 10:29 在 Linux 中一个程序在运行时会派生出多个线程。检查每个进程的线程数&#xff0c;有以下几种方法可…...

【深度学习 】训练过程中loss出现nan

[toc]【深度学习 】训练过程中loss出现nan 训练过程中loss出现nan 在深度学习中&#xff0c;loss 出现 NaN 通常是由数值不稳定或计算错误引起的。 1. 学习率过高 原因: 学习率过大可能导致权重更新幅度过大&#xff0c;引发数值不稳定。 解决方法: 降低学习率&#xff0c;…...

Linux - 什么是线程和线程的操作

线程概念 什么是线程: 线程&#xff08;Thread&#xff09;是操作系统能够进行运算调度的最小单位. 它被包含在进程之中, 是进程中的实际运作单位. 一个进程可以包含多个线程. 进程 : 线程 1 : n (n > 1). 进程是系统分配资源的基本单位. 线程则是系统调度的基本单位. 在…...

windows及linux 安装 Yarn 4.x 版本

1. 确保系统环境准备 a. 安装 Node.js Yarn 依赖于 Node.js,所以需要先安装 Node.js。前往 Node.js 官网 下载并安装适合你的 Windows 版本的 Node.js(推荐 LTS 版本)。安装完成后,打开命令提示符(CMD)或 PowerShell,验证安装:node -v npm -v如果显示版本号,则表示安…...

如何设计一个 RPC 框架?需要考虑哪些点?

面试官&#xff1a;如何设计一个 RPC 框架&#xff1f;需要考虑哪些点&#xff1f; 设计一个远程过程调用&#xff08;RPC&#xff09;框架是一个复杂的系统工程&#xff0c;涉及多个方面的考虑。一个好的 RPC 框架应具备可扩展性、灵活性、易用性和高性能。下面是设计 RPC 框…...

初学stm32 --- DAC输出三角波和正弦波

输出三角波实验简要&#xff1a; 1&#xff0c;功能描述 通过DAC1通道1(PA4)输出三角波&#xff0c;然后通过DS100示波器查看波形 2&#xff0c;关闭通道1触发(即自动) TEN1位置0 3&#xff0c;关闭输出缓冲 BOFF1位置1 4&#xff0c;使用12位右对齐模式 将数字量写入DAC_…...

开源cJson用法

cJSON cJSON是一个使用C语言编写的JSON数据解析器&#xff0c;具有超轻便&#xff0c;可移植&#xff0c;单文件的特点&#xff0c;使用MIT开源协议。 cJSON项目托管在Github上&#xff0c;仓库地址如下&#xff1a; https://github.com/DaveGamble/cJSON 使用Git命令将其拉…...

【学习笔记】理解深度学习和机器学习的数学基础:数值计算

深度学习作为人工智能领域的一个重要分支&#xff0c;其算法的实现和优化离不开数值计算。数值计算在深度学习中扮演着至关重要的角色&#xff0c;它涉及到如何在计算机上高效、准确地解决数学问题。本文将介绍深度学习中数值计算的一些关键概念和挑战&#xff0c;以及如何应对…...

如何使用CSS让页面文本两行显示,超出省略号表示

talk is cheap, show me the code 举个栗子&#xff0c;如下&#xff1a; <span class"a">我说说<b class"b">打瞌睡党风建设打火机</b>说说色儿</span>a{display:block/inline-block;width:100px;overflow: hidden; white-spac…...

likeshop同城跑腿系统likeshop回收租赁系统likeshop多商户商城安装及小程序对接方法

前言&#xff1a;首先likeshop是一个开发平台&#xff0c;是一个独创的平台就像TP内核平台一样&#xff0c;你可以在这个平台上开发和衍生出很多伟大的产品&#xff0c;以likeshop为例&#xff0c;他们开发出商城系统&#xff0c;团购系统&#xff0c;外卖点餐系统&#xff0c;…...

C# 与 Windows API 交互的“秘密武器”:结构体和联合体

一、引言 在 C# 的编程世界里&#xff0c;当我们想要深入挖掘 Windows 系统的底层功能&#xff0c;与 Windows API 打交道时&#xff0c;结构体和联合体就像是两把神奇的钥匙&#x1f511; 它们能够帮助我们精准地操控数据&#xff0c;实现一些高级且强大的功能。就好比搭建一…...

PHP 使用 Redis

PHP 使用 Redis PHP 是一种广泛使用的服务器端编程语言,而 Redis 是一个高性能的键值对存储系统。将 PHP 与 Redis 结合使用,可以为 Web 应用程序提供快速的读写性能和丰富的数据结构。本文将详细介绍如何在 PHP 中使用 Redis,包括安装、连接、基本操作以及一些高级应用。 …...

嵌入式系统Linux实时化(四)Xenomai应用开发测试

1、Xenomai 原生API 任务管理 Xenomai 本身提供的一系列多任务调度机制,主要有以下一些函数: int rt_task_create (RT_TASK task, const char name, int stksize, int prio, intmode) ; 任务的创建;int rt_task_start(RT_TASK task, void(entry)(void cookie), void cookie…...

26个开源Agent开发框架调研总结(2)

根据Markets & Markets的预测&#xff0c;到2030年&#xff0c;AI Agent的市场规模将从2024年的50亿美元激增至470亿美元&#xff0c;年均复合增长率为44.8%。 Gartner预计到2028年&#xff0c;至少15%的日常工作决策将由AI Agent自主完成&#xff0c;AI Agent在企业应用中…...

Element UI与Element Plus:深度剖析

文章目录 前言一、概述二、技术特性三、设计理念四、使用体验五、迁移指南结语 前言 随着前端开发技术的快速发展&#xff0c;Vue.js 生态系统中的组件库也在不断进化。Element UI 和 Element Plus 是两个深受开发者喜爱的 Vue 组件库&#xff0c;它们分别构建于 Vue 2.x 和 V…...

二、BIO、NIO编程与直接内存、零拷贝

一、网络通信 1、什么是socket&#xff1f; Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层&#xff0c;它是一组接口&#xff0c;一般由操作 系统提供。客户端连接上一个服务端&#xff0c;就会在客户端中产生一个 socket 接口实例&#xff0c;服务端每接受 一个客户端…...

VSCode 更好用的设置

配置 {"terminal.integrated.fontSize": 15,"security.workspace.trust.untrustedFiles": "open","editor.minimap.enabled": false,"workbench.colorTheme": "Visual Studio 2017 Light - C","gnuGlobal.c…...

【git】-3 github创建远程仓库,上传自己的项目,下载别人的项目

一、如何使用Github 1、创建远程仓库 2、使用github拉取/推送代码 克隆仓库 向远程仓库推送代码-git push 二、上传我们自己的项目到github 方法一&#xff1a;直接上传 方法二&#xff1a;使用git命令 方法三&#xff1a; 将仓库拉取到本地上传 三、下载别人的项目 …...

计算机组成原理(1)

系统概述 计算机硬件基本组成早期冯诺依曼机现代计算机 计算机各部分工作原理主存储器运算器控制器计算机工作过程 此文章的图片资源获取来自于王道考研 计算机硬件基本组成 早期冯诺依曼机 存储程序是指将指令以二进制的形式事先输入到计算机的主存储器&#xff0c;然后按照…...

Openstack网络组件之Neutron

从Nova到Neutron&#xff1a;OpenStack网络架构的演变 在云计算和虚拟化技术迅猛发展的背景下&#xff0c;OpenStack 成为了构建私有云和公有云平台的首选解决方案之一。早期版本中&#xff0c;Nova 项目不仅负责计算资源的管理&#xff0c;还承担了提供基本网络连接的任务。然…...

OpenClaw会议纪要助手:Qwen3-14b_int4_awq自动生成会议摘要

OpenClaw会议纪要助手&#xff1a;Qwen3-14b_int4_awq自动生成会议摘要 1. 为什么需要自动化会议纪要 每次开完会最头疼的就是整理会议纪要。作为技术负责人&#xff0c;我每周要参加至少5场会议&#xff0c;从需求评审到技术方案讨论&#xff0c;经常一场会下来精疲力尽&…...

千问3.5-2B集成IDEA插件:Java开发者智能代码助手实战

千问3.5-2B集成IDEA插件&#xff1a;Java开发者智能代码助手实战 1. 为什么Java开发者需要AI代码助手 在Java开发过程中&#xff0c;我们经常面临一些重复性工作&#xff1a;编写样板代码、添加注释、修复常见错误、重构旧代码等。这些工作不仅耗时&#xff0c;还容易出错。传…...

DAMO-YOLO目标检测环境搭建DAMO-YOLO数据集代训练DAMO-YOLO代码改进更新可搭建windows系统和ubuntu系统的环境,搭建完直接可用可训练任意目标检测的coco格式数

DAMO-YOLO目标检测环境搭建 DAMO-YOLO数据集代训练 DAMO-YOLO代码改进更新 可搭建windows系统和ubuntu系统的环境&#xff0c;搭建完直接可用 可训练任意目标检测的coco格式数据集&#xff0c;你提供数据集&#xff0c;反馈训练结果和模型测试值 有需要可私聊...

seo代理与网站优化公司的区别在哪里

SEO代理与网站优化公司的区别在哪里 在当今竞争激烈的互联网市场中&#xff0c;各种形式的数字营销服务层出不穷。其中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;和网站优化服务尤为重要。许多人对于SEO代理和网站优化公司的区别却一知半解。本文将详细探讨这两者的…...

如何利用秒排 seo 快速提升关键词排名

如何利用秒排 seo 快速提升关键词排名 在互联网时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为提升网站流量和品牌知名度的关键手段。其中&#xff0c;“秒排 SEO”这一概念在近几年越来越受到关注。究竟什么是“秒排 SEO”&#xff0c;如何利用它来快速提…...

GraphRAG硬核实战:打造企业“数字老师傅”

技术隐喻警示&#xff1a;如果你还在用传统的向量数据库试图解决企业级知识传承问题&#xff0c;这就像试图用“关键词搜索”去训练一个博士生——不仅力不从心&#xff0c;更是对算力的极度浪费。 在企业数字化转型的深水区&#xff0c;我们面临着一个极其残酷的**“默会知识”…...

从‘亮暗模式’到‘向量夹角’:用大白话和几何直觉彻底搞懂归一化互相关(NCC)

从乐高积木到向量空间&#xff1a;用生活化类比拆解归一化互相关&#xff08;NCC&#xff09;的核心逻辑 想象你正在玩一款特殊的乐高积木游戏&#xff1a;每块积木的凸起和凹陷构成独特纹路&#xff0c;而你的任务是在一堆杂乱积木中找出与手中样本完全契合的那一块。这个看似…...

硫化物固态电池 vs 传统锂电池:性能、成本、安全性全方位对比

硫化物固态电池 vs 传统锂电池&#xff1a;性能、成本、安全性全方位对比 当特斯拉Model 3车主王先生第一次听说"固态电池"这个概念时&#xff0c;他正为爱车冬季续航缩水30%而烦恼。像他这样的电动车用户&#xff0c;正在推动一场动力电池技术的静默革命——从传统液…...

降AI后格式乱了怎么修:Word格式修复操作指南

降AI后格式乱了怎么修&#xff1a;Word格式修复操作指南 上周室友第一次用降AI工具&#xff0c;操作错了好几步&#xff0c;差点浪费机会。觉得有必要写一篇详细教程。 我用的是嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;&#xff0c;4.8元一篇&#xff0c;达标率9…...

python pex

## 聊聊Python的PEX&#xff1a;一个被低估的打包工具 在Python的世界里&#xff0c;打包和分发一直是个让人头疼的问题。传统的pip install虽然方便&#xff0c;但在某些场景下&#xff0c;比如需要快速部署、环境隔离或者离线分发时&#xff0c;就显得有些力不从心了。这时候…...