stress压测脚本备份
SHELL#!/bin/bash
# 检查依赖
for pkg in screen stress; do
if ! command -v $pkg &>/dev/null; then
echo "[ERROR] 未找到命令 '$pkg',请先安装:sudo apt update && sudo apt install -y $pkg"
exit 1
fi
done
echo "===== 系统信息检测 ====="
# CPU 型号
CPU_MODEL=$(lscpu | grep "Model name" | awk -F: '{print $2}' | sed 's/^[ \t]*//')
echo "CPU 型号:$CPU_MODEL"
# CPU 线程数
CPU_THREADS=$(lscpu | awk '/^CPU\(s\):/ {print $2}')
echo "CPU 线程数:$CPU_THREADS"
# CPU 物理核心数
CPU_CORES=$(lscpu | awk -F: '/^Core\(s\) per socket:/ {cores=$2} /^Socket\(s\):/ {sockets=$2} END {print cores * sockets}' | sed 's/^[ \t]*//')
echo "CPU 物理核心数:$CPU_CORES"
# 检查是否启用虚拟化
VIRT=$(lscpu | awk -F: '/Virtualization:/ {print $2}' | sed 's/^[ \t]*//')
if [[ "$VIRT" == "VT-x" || "$VIRT" == "AMD-V" ]]; then
echo "虚拟化支持:已启用($VIRT)"
else
echo "虚拟化支持:未启用或不支持"
fi
# 获取总内存(MB),然后换算为 GB
TOTAL_MEM_MB=$(free -m | awk '/^Mem:/ {print $2}')
TOTAL_MEM_GB=$(awk "BEGIN {printf \"%.0f\", ${TOTAL_MEM_MB} / 1024}")
echo "总内存:${TOTAL_MEM_GB} GB"
# 计算压测资源
USE_CPU=$(awk "BEGIN {printf \"%d\", (${CPU_THREADS} * 0.75 + 0.999)}") # 向上取整
USE_MEM_GB=$(awk "BEGIN {printf \"%.0f\", ${TOTAL_MEM_GB} * 0.75}")
echo
echo "===== 压测配置 ====="
echo "使用 CPU 核心数:$USE_CPU"
echo "使用 内存大小:${USE_MEM_GB} GB"
echo "压测将在名为 'stress' 的 screen 会话中后台运行"
echo "要停止压测,请运行:screen -r stress 然后 Ctrl+C 终止"
echo
# 启动 screen 压测(不限制时间)
screen -dmS stress stress --cpu "$USE_CPU" --vm 1 --vm-bytes "${USE_MEM_GB}G" --vm-keep
echo "压测已启动。你可以稍后通过以下命令进入查看:"
echo " screen -r stress"