通过shell脚本进行linux服务器的CPU和内存压测

内存压测

python的方式

# _*_ coding: utf-8 _*_
import sys
import re
import time

def print_help():
    print ('Usage:')
    print ('python mem.py 100MB')
    print ('python mem.py 1GB')

if __name__=="__main__":
    if len(sys.argv) == 2:
        pattern = re.compile('^(\d*)(M|G|B)$')
        match = pattern.match(sys.argv[1].upper())
        if match:
            num = int(match.group(1))
            unit = match.group(2)
            if unit == 'MB':
                s = ' '* (num * 1024 * 1024)
            else:
                s = ' '* (num * 1024 * 1024 * 1024)
                time.sleep(30)
        else:
            print_help()
    else:
        print_help()
 

shell的方式

#!/bin/bash
PWD=$(cd $(dirname $0); pwd)
MEM_DIR='/tmp/memory'
MEM_SIZE=$1

[ ! -d ${MEM_DIR} ] && mkdir ${MEM_DIR}
mount -t tmpfs -o size=${MEM_SIZE} tmpfs ${MEM_DIR} >> ${PWD}/mem_up.log 2>&1
if [ $? == 0 ]
then
    dd if=/dev/zero of=${MEM_DIR}/test count=1 bs=${MEM_SIZE} >> ${PWD}/mem_up.log 2>&1
    if [ $? == 0 ]
    then
        sleep 30
        rm ${MEM_DIR}/test && \
        umount ${MEM_DIR} && \
        rm -rf ${MEM_DIR}
    else
        rm ${MEM_DIR}/test && \
        umount ${MEM_DIR} && \
        rm -rf ${MEM_DIR}
        printf "\e[0;31msomething was error , please check ${PWD}/mem_up.log\e[0m\n"
        exit 1
    fi
else
    printf "\e[0;31msomething was error , please check ${PWD}/mem_up.log\e[0m\n"
    exit 2
fi

使用方法:sh mem.sh 20G

mem.sh是自定义的,这个不受限制

缺点:dd if 命令是使用磁盘读写,将磁盘内的/dev/zero写入到内存的tmpfs

 cpu压测

#!/bin/sh
PWD=$(cd $(dirname $0); pwd)
cpu_num=$1

if [ $# != 1 ]
then
  printf "\e[0;34mUSAGE: $0 <CPUs>\e[0m\n"
  exit 1
fi

for i in $(seq ${cpu_num})
do
    echo -ne "
    i=0;
while true
do
    i=i+1;
done" | /bin/sh &
    pid_array[${i}]=$! ;
done

for i in "${pid_array[@]}"; do
    printf "\e[0;32mkill ${i}\e[0m\n" >> ${PWD}/kill_cpu_up.log 2>&1
done
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值