48 lines
1.0 KiB
Bash
48 lines
1.0 KiB
Bash
#!/bin/bash
|
|
|
|
#############################################################################################
|
|
# 用途: 检测 CPU 负载
|
|
# 作者: 丁辉
|
|
# 更新时间: 2024-05-10
|
|
#############################################################################################
|
|
|
|
# 获取第一次 CPU 时间统计
|
|
read -a stats1 < /proc/stat
|
|
|
|
# 第一次统计的总 CPU 时间
|
|
total1=0
|
|
for i in {1..4}; do
|
|
total1=$((total1 + ${stats1[i]}))
|
|
done
|
|
|
|
# 第一次统计的空闲 CPU 时间
|
|
idle1=${stats1[4]}
|
|
|
|
# 等待一个时间间隔
|
|
sleep 1
|
|
|
|
# 获取第二次 CPU 时间统计
|
|
read -a stats2 < /proc/stat
|
|
|
|
# 第二次统计的总 CPU 时间
|
|
total2=0
|
|
for i in {1..4}; do
|
|
total2=$((total2 + ${stats2[i]}))
|
|
done
|
|
|
|
# 第二次统计的空闲 CPU 时间
|
|
idle2=${stats2[4]}
|
|
|
|
# 计算总的 CPU 时间差和空闲 CPU 时间差
|
|
total=$((total2 - total1))
|
|
idle=$((idle2 - idle1))
|
|
|
|
# 避免除零错误
|
|
if [ $total -ne 0 ]; then
|
|
cpu_usage=$((100 * (total - idle) / total))
|
|
else
|
|
cpu_usage=0
|
|
fi
|
|
|
|
# 输出 CPU 使用率
|
|
echo "当前 CPU 使用率为: $cpu_usage%" |