Linux系统小技巧(2):利用ps工具统计CPU/MEM消耗高或者负载高的进程

简介: 如果通过ps列出CPU消耗高或者内存消耗高的线程,如何统计线程消耗的总的CPU或者内存,请看此短文。

CPU消耗高往往是系统异常的一种表现。因为平常检查系统运行有哪些进程,都是使用ps工具。因此,出现这种情况时,如果能够通过ps工具搜寻出CPU消耗高的线程,则对进一步搜寻线索或者排查应该有帮助。

下面我们讨论两个相关的小技巧。

首先,我们得了解一下进程的概念。我们都很熟悉进程了,那么,线程是什么呢?引用Andrew S. Tanenbaum的话,就是

进程认为自己独占一台主机;线程认为自己独占一颗CPU。

所以,一个进程可能包含多个线程。但是考察CPU消耗问题,只考虑进程而不考虑线程是不够的。就是说,我们总是得给ps命令加上“-T”选项。

为了便于按照CPU消耗的情况排序,我们也通过“-o”定制ps输出的字段,以确保CPU消耗占比字段是第一个字段,这样便于排序。

列出消耗高的线程

命令如下

LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | grep -v CPU | sort -n -r | head -20

效果如下
_2017_07_17_16_14_48

统计线程消耗的总的CPU

命令如下

{ LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | sed -e 's/^ *//' | tr -s ' ' | grep -v CPU | sort -n -r | cut -d ' ' -f 1 | xargs -I{} echo -n "{} + " && echo ' 0'; } | bc -l

效果如下
_2017_07_17_16_15_16

应用

设想我们需要追踪CPU占用最好的线程,则可以这样

export LANG=C;d=$(mktemp -d) && cd $d # 建并进入临时目录
# 捕捉之
strace -f -ff -s 256 -tt -T -o strace.log -p $(ps -eT -o%cpu,pid,tid,ppid,comm | grep -v CPU | sort -n -r | head -1 | sed -e 's/^ *//' | tr -s ' '  | cut -d ' ' -f 3)

内存

线程是共享内存空间的。所以,一般情况下,没有必要使用“-T”选项。

列出内存消耗高的进程

LANG=C ps -e -o%mem,pid,tid,ppid,comm | grep -v MEM | sort -n -r | head -20

统计内存消耗情况

{ LANG=C ps -e -o%mem,pid,tid,ppid,comm | sed -e 's/^ *//' | tr -s ' ' | grep -v MEM | sort -n -r | cut -d ' ' -f 1 | xargs -I{} echo -n "{} + " && echo ' 0'; } | bc -l

列出导致CPU负载高的线程

LANG=C ps -eTo stat,pid,tid,ppid,comm,args | perl -ne 'chomp;if (m!^\s*(\S*[RD]+\S*.*)!) {print qq[$1\n];}'
相关文章
|
4月前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
427 4
|
4月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
416 16
|
4月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
248 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
6月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
187 0
Linux系统性能调优技巧和相关工具
|
5月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
Linux
百度搜索:蓝易云【Linux系统ps命令:查看正在运行的进程】
通过这些简洁的ps命令用法,你可以方便地查看Linux系统中正在运行的进程信息。
283 1
|
安全 Linux 应用服务中间件
linux(三十一)系统信息命令ps查看系统进程
linux(三十一)系统信息命令ps查看系统进程
484 1
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
503 0
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
443 13
|
调度
crash命令 —— ps
crash命令 —— ps

热门文章

最新文章