Cpustat – 通过 Linux 中的运行进程监控 CPU 利用率
Cpustat 是一个命令行实用程序,用于通过 Linux 中的运行进程监控 CPU 利用率。它允许用户查看单个进程和进程组的 CPU 时间占用情况,从而深入了解系统资源的利用情况。使用 Cpustat,用户可以识别消耗过多 CPU 时间的进程,并采取措施优化系统性能。
安装 Cpustat
Cpustat 适用于大多数 Linux 发行版,可以使用软件包管理器进行安装。在 Debian/Ubuntu 上,使用以下命令安装 -
sudo apt-get install cpustat
在 Fedora/CentOS 上,使用以下命令 -
sudo dnf install cpustat
使用 Cpustat
要使用 Cpustat,只需运行命令 cpustat 并加上任意可选参数即可。默认情况下,Cpustat 将显示所有正在运行的进程的 CPU 利用率摘要。
cpustat
输出提供了所有正在运行的进程的 CPU 利用率摘要,包括进程总数、CPU 总时间以及每个进程使用的 CPU 时间百分比。
用户还可以指定要监控的特定进程或进程组,以及根据 CPU 使用率、进程名称或其他条件筛选结果。例如,要显示特定进程的 CPU 利用率,请使用 -p 选项,后跟进程 ID。
cpustat -p PID
要监控一组进程,请使用 -g 选项,后跟进程组名称。
cpustat -g group_name
Cpustat 还提供了几个自定义输出的选项,包括更改显示间隔、按不同条件排序以及选择输出格式。
显示间隔
要更改显示间隔,请使用 -i 选项,后跟更新间隔的秒数。
cpustat -i 2
这将每 2 次更新显示一次秒。
排序
要按不同条件对输出进行排序,请使用 -S 选项,后跟所需的条件。
cpustat -S %cpu
这将按 CPU 使用率百分比对输出进行排序。
输出格式
要选择输出格式,请使用 -o 选项,后跟所需的格式。
cpustat -o csv
这将以逗号分隔值的格式输出数据。
高级用法:使用 Cpustat 编写脚本
Cpustat 最强大的功能之一是其脚本化和自动化功能。通过将 Cpustat 与 Shell 脚本或其他编程语言结合使用,您可以根据特定需求创建自定义监控解决方案。以下是一些可以使用 Cpustat 创建的脚本示例 -
CPU 利用率随时间变化
要使用 Cpustat 监控 CPU 利用率随时间变化的情况,您可以创建一个 Shell 脚本,定期运行 Cpustat 并将输出附加到日志文件。以下是示例 -
#!/bin/bash while true; do cpustat -o csv >> cpu_log.csv sleep 1 done
此脚本使用 while 循环每秒持续运行 Cpustat,并将输出附加到名为 cpu_log.csv 的 CSV 文件中。-o csv 选项指示 Cpustat 以 CSV 格式输出数据,该格式可以使用 Excel 或 Python 的 pandas 库等工具轻松解析和分析。
高 CPU 使用率警报
要创建一个使用 Cpustat 监控 CPU 使用率并在超过特定阈值时发送警报的警报脚本,您可以使用 awk 等工具解析 Cpustat 输出,并将 CPU 使用率与预定义阈值进行比较。以下是示例 -
#!/bin/bash
while true; do
cpustat -o csv | awk -F ',' '{ if ($2 > 50) print "High CPU usage detected: " $0 }'
sleep 1
done
此脚本使用 while 循环每秒持续运行 Cpustat,并将输出通过管道传输到 awk。awk 命令使用 -F ',' 选项指定输入为 CSV 格式,并将第二列(包含 CPU 使用率百分比)与阈值 50% 进行比较。如果 CPU 使用率超过阈值,awk 会将消息打印到控制台。
您可以根据具体需求修改此脚本,使其发送电子邮件或其他类型的通知,而不是打印到控制台。
进程分析
要使用 Cpustat 分析特定进程或进程组的 CPU 使用率,您可以使用 -p 选项指定进程 ID 或名称。以下是示例 -
#!/bin/bash while true; do cpustat -o csv -p nginx >> nginx_cpu.csv cpustat -o csv -p postgres >> postgres_cpu.csv sleep 1 done
此脚本使用 while 循环每秒持续运行 Cpustat,并监控两个特定进程(nginx 和 postgres)的 CPU 使用率。每个进程的输出都会写入单独的 CSV 文件(分别为 nginx_cpu.csv 和 postgres_cpu.csv),您可以分析该文件以识别性能问题或瓶颈。
以上只是 Cpustat 用于脚本编写和自动化的几个示例。凭借其可自定义的输出和实时监控功能,其应用前景无限广阔。
Cpustat 与其他系统监控工具的比较
Cpustat 只是众多可用于监控 Linux 系统性能的工具之一。其他流行的系统监控工具包括 top、htop 和 glances,它们各有优缺点。与其他工具相比,Cpustat 的优势如下:-
进程级监控 - 与显示系统级 CPU 利用率的 top 和 htop 不同,Cpustat 可以监控单个进程或进程组的 CPU 利用率。这使得识别哪些进程消耗的 CPU 资源最多变得更容易。
可自定义输出 - 您可以使用命令行选项自定义 Cpustat 的输出,使其仅显示与您相关的信息。例如,您可以选择显示或隐藏特定列、调整输出宽度或根据不同条件对输出进行排序。
实时监控 - Cpustat 可用于实时监控 CPU 利用率随时间的变化。这对于识别导致 CPU 使用率飙升的进程,或监控特定事件或进程中的 CPU 使用率尤其有用。
总而言之,Cpustat 是一款功能强大的 Linux CPU 利用率监控工具,相比其他常用的系统监控工具,它具有诸多优势。
结论
Cpustat 是一款功能强大且灵活的工具,可通过在 Linux 中运行的进程来监控 CPU 利用率。它提供了丰富的系统性能信息,使用户能够识别性能瓶颈并优化系统资源。Cpustat 的交互模式使用户能够以便捷易懂的方式轻松查看正在运行的进程的 CPU 使用率。
由于 Cpustat 能够提供 CPU 使用率的历史数据,因此也可用于故障排除。此外,该工具的脚本功能使其可用于自动执行任务和生成有关系统性能的自定义报告。
凭借其直观的界面和可自定义的选项,Cpustat 是任何需要监控系统性能的 Linux 用户的必备工具。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

