#!/bin/bash # 压力测试入口脚本(打包在镜像内) # auto-check 启动容器时通过环境变量传参,执行完整测试流程: # 系统信息 → 温度监控启动 → 各项压测(先单项、后综合)→ 温度监控收尾 → 内核日志 set -e # 统一 UTF-8 locale:否则 sensors 输出 "+51.0 C"(无 ° 符号), # 脚本中 (?=°C) 的温度正则会全部失配,导致温度采集不到 export LC_ALL=C.UTF-8 export LANG=C.UTF-8 # 默认值(docker -e 传入时覆盖) export AUTOCHECK_TYPES="${AUTOCHECK_TYPES:-cpu,memory}" export AUTOCHECK_DURATION="${AUTOCHECK_DURATION:-30}" export AUTOCHECK_THREADS="${AUTOCHECK_THREADS:-4}" export AUTOCHECK_MEM_SIZE_MB="${AUTOCHECK_MEM_SIZE_MB:-0}" export AUTOCHECK_DISK_SIZE_MB="${AUTOCHECK_DISK_SIZE_MB:-1024}" export AUTOCHECK_TEMP_INTERVAL="${AUTOCHECK_TEMP_INTERVAL:-10}" export AUTOCHECK_SAMPLE_INTERVAL="${AUTOCHECK_SAMPLE_INTERVAL:-2}" if [ -n "$AUTOCHECK_DISK_DIR" ]; then export AUTOCHECK_DISK_DIR; fi # 1. 系统信息 source /scripts/sysinfo.sh # 2. 温度监控(后台周期采样) source /scripts/temp_start.sh # 未知类型输出 skip,保证报告完整 for T in $(echo "$AUTOCHECK_TYPES" | tr ',' ' '); do case "$T" in cpu|memory|disk|memnative|full) ;; *) echo "===TEST:$T===" echo "status:skip" echo "output:未知测试类型" echo "" ;; esac done # 3. 按固定顺序执行请求的测试(先单项、综合 full 最后) REQ_TYPES=",${AUTOCHECK_TYPES// /}," for TYPE in cpu memory disk memnative full; do case "$REQ_TYPES" in *",$TYPE,"*) source "/scripts/$TYPE.sh" ;; esac done # 4. 温度监控收尾 source /scripts/temp_end.sh # 5. 内核日志 + 结束标记 source /scripts/dmesg.sh