#!/bin/bash
# CPU压力测试脚本 - 用于测试服务器散热能力
# 用法: ./cpu_stress_test.sh [持续时间(秒)]
# 如果未指定持续时间,默认为60秒
set -e
DURATION=${1:-60} # 默认60秒
# 检查stress-ng是否安装
if ! command -v stress-ng &> /dev/null; then
echo "stress-ng 未安装。正在尝试安装..."
if command -v apt-get &> /dev/null; then
sudo apt-get update && sudo apt-get install -y stress-ng
else
echo "错误: 无法自动安装stress-ng。请手动安装: sudo apt-get install stress-ng"
exit 1
fi
fi
# 获取CPU核心数
CPU_CORES=$(nproc)
echo "========================================"
echo "CPU压力测试开始"
echo "CPU核心数: $CPU_CORES"
echo "测试时长: $DURATION 秒"
echo "========================================"
# 捕获Ctrl+C信号,确保stress-ng被终止
cleanup() {
echo -e "\n收到中断信号,正在停止压力测试..."
pkill -f stress-ng
exit 0
}
trap cleanup SIGINT SIGTERM
# 启动stress-ng,使用所有CPU核心,指定时长
stress-ng --cpu $CPU_CORES --timeout ${DURATION}s --metrics-brief &
# 获取stress-ng的PID
STRESS_PID=$!
# 显示倒计时进度
SECONDS_LEFT=$DURATION
while [ $SECONDS_LEFT -gt 0 ]; do
echo -ne "剩余时间: ${SECONDS_LEFT}s \r"
sleep 1
((SECONDS_LEFT--))
done
# 等待stress-ng自然结束
wait $STRESS_PID
echo -e "\n========================================"
echo "CPU压力测试完成。"
echo "请检查CPU温度等散热相关指标。"
echo "========================================"
使用方法
保存脚本
将上述内容复制到一个文件中,例如 cpu_stress_test.sh。
赋予执行权限
bash
chmod +x cpu_stress_test.sh
运行脚本
不带参数运行,默认测试 60 秒:
bash
./cpu_stress_test.sh
指定测试时长(例如 300 秒):
bash
./cpu_stress_test.sh 300