Cheug's Blog

当前位置:网站首页 / shell / 正文

使用bc简单cpu测压shell

2024-07-16 / shell / 124 次围观 / 0 次吐槽 /
#!/bin/bash

# 参数检查
if [ $# -ne 3 ]; then
    echo "Usage: $0 <threads> <duration> <iterations>"
    exit 1
fi

# 参数设置
THREADS=$1
DURATION=$2
ITERATIONS=$3

# 结果文件
RESULT_FILE="cpu_stress_test_results.txt"
echo "CPU Stress Test Results" > $RESULT_FILE
echo "Threads: $THREADS, Duration: $DURATION, Iterations: $ITERATIONS" >> $RESULT_FILE
echo "-------------------------------------------" >> $RESULT_FILE

# 测试函数
cpu_stress_test() {
    end=$((SECONDS + DURATION))
    while [ $SECONDS -lt $end ]; do
        echo "scale=5000; a(1)*4" | bc -l > /dev/null
    done
}

# 进行循环测试
for (( i=1; i<=ITERATIONS; i++ ))
do
    echo "Iteration $i/$ITERATIONS" | tee -a $RESULT_FILE
    START_TIME=$(date +%s)
    
    # 启动多个线程
    for (( j=1; j<=THREADS; j++ ))
    do
        cpu_stress_test &
    done

    # 等待所有后台任务完成
    wait

    END_TIME=$(date +%s)
    ELAPSED_TIME=$((END_TIME - START_TIME))
    echo "Test completed in $ELAPSED_TIME seconds" | tee -a $RESULT_FILE
    echo "-------------------------------------------" >> $RESULT_FILE
    sleep 1  # 间隔1秒后继续下一次测试
done

echo "测试完成,结果保存在 $RESULT_FILE 文件中。"

赋予执行权限

chmod +x cpu_stress_test.sh

运行脚本

./cpu_stress_test.sh <threads> <duration> <iterations>
nohup ./cpu_stress_test.sh <threads> <duration> <iterations> &> cpu_test.log &
  • <threads>:测试使用的CPU线程数。

  • <duration>:每次测试的持续时间(秒)。

  • <iterations>:测试的循环次数。


Powered By Cheug's Blog

Copyright Cheug Rights Reserved.