内存测试脚本,有bug,继续更新中...
#!/bin/bash
################################################################
# mem used script
# eg. ./mem.sh 60G 3600(unit: s) to start testing
# eg. ./mem.sh stop to stop testing and clear env
# update: 2019-1-22 pansaky
################################################################
num=$1
tm=$2
start()
{
sudo mkdir /tmp/memory
sudo mount -t tmpfs -o size=$num tmpfs /tmp/memory
dd if=/dev/zero of=/tmp/memory/block
sleep $tm
}
stop()
{
pid=`ps -ef |grep "mem.sh"|grep -v grep|awk '{print $2}'`
if [ -n "$pid" ];then
kill -9 $pid
fi
sudo rm -rf /tmp/memory/block
sudo umount /tmp/memory
sudo rmdir /tmp/memory
}
main()
{
if [ $num == 'stop' ];then
stop
else
start > mem.log 2>&1
fi
}
if [ $# = 2 -o $# = 1 ];then
main
#elif [ -z $1 -a -z $2 ];then
else
echo 'Usage: ./mem.sh 60G 3600(unit: s) or ./mem.sh stop'
fi
更新后脚本,第一个留着鄙视自己哈~
#!/bin/bash
################################################################
# mem used script
# eg. ./mem.sh 60G & to start testing
# eg. ./mem.sh stop to stop testing and clear env
# update: 2019-1-22 pansaky
################################################################
num=$1
user=`whoami`
start()
{
if [ -d /tmp/memory ];then
echo "the dir "/tmp/memory" is already exist!, use it." >> mem.log
else
sudo mkdir /tmp/memory
mount -t tmpfs -o size=$num tmpfs /tmp/memory
fi
dd if=/dev/zero of=/tmp/memory/block >> mem.log 2>&1
}
stop()
{
rm -rf /tmp/memory/block
umount /tmp/memory
rmdir /tmp/memory
if [ -d /tmp/memory ];then
echo "Do not remove the dir \"/tmp/memory\", please check "
else
echo "clear env is done!"
fi
}
main()
{
if [ $num == 'stop' ];then
stop
elif [ $user != "root" ];then
echo "please use the \"root\" excute script!"
exit 1
else
start
fi
}
if [ $# = 2 -o $# = 1 ];then
main
else
echo 'Usage: <./mem.sh 60G &> to start or <./mem.sh stop> to clear env'
fi
看到别人写的c脚本 拉过来用一哈
/*usage: cc mem.c -o mem.out 后 使用./mem.out 100 & 消耗对应数字MB单位的内存,释放时杀掉对应进程即可*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#define UNIT (1024*1024)
int main(int argc, char *argv[])
{
long long i = 0;
int size = 0;
if (argc != 2) {
printf(" === argc must 2\n");
return 1;
}
size = strtoull(argv[1], NULL, 10);
if (size == 0) {
printf(" argv[1]=%s not good\n", argv[1]);
return 1;
}
char *buff = (char *) malloc(size * UNIT);
if (buff)
printf(" we malloced %d Mb\n", size);
buff[0] = 1;
for (i = 1; i < (size * UNIT); i++) {
if (i%1024 == 0)
buff[i] = buff[i-1]/8;
else
buff[i] = i/2;
}
pause();
}