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 使用情况变得方便易懂。

凭借其提供 CPU 使用情况历史数据的能力,Cpustat 也可用于故障排除。此外,该工具的脚本编写功能使其可用于自动化任务并生成关于系统性能的自定义报告。

凭借其直观的界面和可自定义的选项,Cpustat 对于任何需要监控系统性能的 Linux 用户来说都是必不可少的工具。

更新于:2023年6月26日

499 次查看

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.