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 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告