關鍵字:
top、awk、sed、mpstat
⚠️ 注意事項
🎯 TLDR
- AirNet系統CPU使用率使用glibtop的api的返回值:cpu超限告警沒有確認週期,超限立即告。
1、獲取CPU使用率;計算: 100 - CPU空閒百分比 = CPU使用率
top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8"%"}'
這個命令的工作原理是:
- top -bn1 - 以批處理模式(-b)運行一次(-n1)top命令,獲取系統狀態的快照
- grep "Cpu(s)" - 過濾出包含"Cpu(s)"的行,這一行顯示了總體CPU使用率信息
- awk '{print 100 - $8"%"}' - 使用awk提取第8個字段($8),這個字段表示CPU空閒(idle)百分比,然後用100減去它得到CPU使用率
- 總體平均使用率 - 默認情況下, top -bn1 | grep "Cpu(s)" 顯示的是所有CPU核心的平均使用率。在輸出中,"Cpu(s)"行的統計數據是所有核心的總和平均。
top -bn1 | grep "Cpu(s)" | sed 's/.*, *\([0-9.]*\)%* id.*/\1/' | awk '{print 100 - $1"%"}'
- top -bn1
- -b : 以批處理模式運行,適合輸出到文件或管道
- -n1 : 只執行一次更新,而不是連續更新
- 這個命令生成系統狀態的快照,包含CPU、內存等資源使用信息
- grep "Cpu(s)"
- 過濾出包含"Cpu(s)"的行,這一行顯示了總體CPU使用率信息
- 例如,這一行可能看起來像: Cpu(s): 20.5%us, 15.3%sy, 0.0%ni, 63.7%id, 0.0%wa, 0.0%hi, 0.5%si, 0.0%st
- sed 's/. , ([0-9.] )% id.*/\1/'
- 這是一個sed替換命令,使用正則表達式提取空閒CPU百分比
- .*, * : 匹配任何字符直到最後一個逗號和後面可能的空格
- \([0-9.]*\) : 捕獲組,匹配數字和小數點組成的數字(即空閒百分比的值)
- %* id.* : 匹配可能的百分號、空格、"id"和後面的所有字符
- \1 : 替換為捕獲組的內容(即空閒百分比的數值)
- 例如,從上面的示例中,這會提取出"63.7"
- awk '{print 100 - $1"%"}'
- 接收sed輸出的空閒百分比數值
- 用100減去這個數值,得到CPU使用率
- 添加百分號並輸出結果
- 在這個例子中,100 - 63.7 = 36.3%(注意:這裏的數值只是示例,實際輸出取決於系統狀態)
2、使用mpstat工具(sysstat包的一部分)可以獲取每個核心的詳細信息。
- mpstat -P ALL 是一個用於監控多核CPU性能的強大命令。它屬於 sysstat 包,提供了每個CPU核心(包括所有核心的平均值)的詳細性能統計信息。功能説明
- mpstat :Multi-Processor Statistics 的縮寫,專門用於報告CPU相關統計信息
- -P ALL :參數表示顯示所有CPU核心的統計數據,包括總體平均值
[root@FDP1 config]# mpstat -P ALL
Linux 3.10.0-862.el7.x86_64 (FDP1) 2025年11月25日 _x86_64_ (8 CPU)
13時24分21秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
13時24分21秒 all 18.21 0.00 10.13 0.28 0.00 1.60 0.00 0.00 0.00 69.78
13時24分21秒 0 30.93 0.00 8.09 0.16 0.00 9.82 0.00 0.00 0.00 51.00
13時24分21秒 1 15.93 0.00 10.13 0.30 0.00 0.74 0.00 0.00 0.00 72.89
13時24分21秒 2 16.41 0.00 10.42 0.30 0.00 0.51 0.00 0.00 0.00 72.37
13時24分21秒 3 15.95 0.00 10.55 0.30 0.00 0.39 0.00 0.00 0.00 72.81
13時24分21秒 4 16.35 0.00 10.55 0.30 0.00 0.33 0.00 0.00 0.00 72.48
13時24分21秒 5 16.59 0.00 10.49 0.30 0.00 0.30 0.00 0.00 0.00 72.32
13時24分21秒 6 16.56 0.00 10.44 0.30 0.00 0.28 0.00 0.00 0.00 72.42
13時24分21秒 7 16.70 0.00 10.38 0.30 0.00 0.26 0.00 0.00 0.00 72.36