Linux压测

目录

CPU压测

内存压测


本文主要是编写了shell脚本,对Linux系统进行CPU和内存的压测。

CPU压测

bash 复制代码
[root@localhost ~]# cat cpu_stress_test.sh
#!/bin/bash  
  
# 定义压测CPU的函数  
function test_cpu() {  
    # 初始化时间变量  
    local time=  
  
    # 获取参数  
    while getopts ":t:h" opt; do  
        case $opt in  
            t)  
                # 使用OPTARG而不是OPT(注意大小写)  
                time=$OPTARG  
                ;;  
            h)  
                echo "Usage: $0 -t <time>"  
                echo "  -t <time>  The time to test the CPU in seconds."  
                exit 0  
                ;;  
            \?)  
                echo "Invalid option: -$OPTARG" >&2  
                echo "Usage: $0 -t <time>"  
                exit 1  
                ;;  
            :)  
                echo "Option -$OPTARG requires an argument." >&2  
                echo "Usage: $0 -t <time>"  
                exit 1  
                ;;  
        esac  
    done  
  
    # 检查时间是否已设置  
    if [[ -z "$time" ]]; then  
        echo "Error: Missing -t argument."  
        exit 1  
    fi  
  
    # 转换为整数并检查是否为正数  
    if ! [[ "$time" =~ ^[0-9]+$ ]]; then  
        echo "Error: Time must be a positive integer."  
        exit 1  
    fi  
  
    # 开始压测  
    echo "开始压测CPU,持续时间为 $time 秒..."  
    # 这里可以添加实际的压测命令  
    # 例如:(yes "testing cpu" | md5sum) & PID=$! ...  
    yes "" > /dev/null 2>&1 &
    PID=$!
    sleep $time
    kill $PID &>/dev/null
    
    # 等待压测完成或用户中断 
    wait $PID &>/dev/null
    echo "CPU压测已停止"  
}  
  
# 检查是否传递了参数给脚本,如果没有,则显示帮助手册  
if [[ $# -eq 0 ]]; then  
    test_cpu -h  
    exit 0  
fi  
  
# 调用test_cpu函数处理命令行参数  
test_cpu "$@"

[root@localhost ~]# chmod +x cpu_stress_test.sh 
[root@localhost ~]# ./cpu_stress_test.sh -t 30
开始压测CPU,持续时间为 30 秒...
CPU压测已停止

内存压测

bash 复制代码
[root@localhost ~]# cat memory_stress_test.sh
#!/bin/bash

dirname="/tmp/$RANDOM"

cmd_help() {
    echo "-h : 查看帮助"
    echo "-m : 指定压测内存大小 单位 M G"
    echo "-t : 指定压测时间,默认单位是秒"
    echo "示例:$0 -m 1G -t 30"
}

mem_test() {
    mkdir $dirname
    mount -t tmpfs -o size=${size} tmpfs ${dirname}
    echo -e "\033[31m 开始进行内存压测 \033[0m "
    dd if=/dev/zero of=${dirname}/${RANDOM} bs=${size} count=1 &>/dev/null
    sleep $time
}

mem_clean() {
    echo -e "\033[31m 压测结束,清理内存 \033[0m "
    rm -rf ${dirname}/*
    umount ${dirname}
    rm -rf ${dirname}
}

if [ "$#" -eq 0 ];then 
    cmd_help
    exit 1
fi 

while getopts hm:t: opt; do
   case "${opt}" in
    h)
        cmd_help
    ;;
    m)
        size=${OPTARG}
    ;;
    t)
        time=${OPTARG}
    ;;
    *)
        echo "Unknown option: ${opt}"
        echo "Please use: $0 -h"
    ;;
   esac
done

mem_test
mem_clean

[root@localhost ~]# chmod +x memory_stress_test.sh
[root@localhost ~]# ./memory_stress_test.sh -m 1G -t 30
 开始进行内存压测  
 压测结束,清理内存  
相关推荐
Data_Journal3 小时前
用于网页抓取的 Node-unblocker
大数据·开发语言·数据库·python·scrapy
专注API从业者3 小时前
告别人工盯品!借助 Open Claw 搭建电商商品自动化监控与数据分析系统(完整可运行源码)
大数据·运维·数据库·数据分析·自动化
豆角焖肉3 小时前
SSM 聚合项目搭建:多 Maven 模块项目
开发语言·python·pycharm
青 春 记 忆3 小时前
零基础入门python20:Flask配置、扩展和蓝图拆分
python·flask·后端开发
m0_380743874 小时前
为 OpenAI 兼容接口配置教程
开发语言·python·node.js
爱喝水的鱼丶5 小时前
SAP-ABAP:ABAP 用户出口参数传递与上下文获取:SAP 标准数据读取与交互逻辑实现
运维·性能优化·交互·sap·abap·经验交流·出口
IT大白鼠5 小时前
PentestGPT作为AI运维编排工作流自动化底座的技术架构与应用价值评估
运维·人工智能·自动化·pentestgpt
M78佐菲5 小时前
c语言学习笔记:排序与查找方法整理
linux·c语言·笔记·学习·算法
ltl5 小时前
QUIC 协议拆解(上):为什么 TCP 改不动了
linux
j7~5 小时前
【Git】《Git 系列指南(二):Git基本操作与 reset 三种模式》
运维·git·git安装·git基本操作·git配置·创建git仓库·git reset三种模式