A-A+
linux内存测试 内存占用脚本 可指定占用内存大小
/*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();
}
上面是C写的内存占用测试的脚本, 首先你需要把上面的脚本保存为mem.c文件,然后编译它,linux系统内必须要安装gcc,然后执行cc mem.c -o mem.out
编译后生成mem.out文件, 然后执行命令./mem.out 100 &
消耗对应数字MB单位的内存,释放时杀掉对应进程即可
示例:首先查看本机内存free -h
如上图,总内存7.6G(其实是8G), 已经使用为1.0G ,空闲内存2.8G,可以使用的6.2G
这里我执行了命令是./mem.out 6100 &
,执行了3次后,然后如下图
可用内存仅剩246MB,已经几乎快占满了,如果再运行一次 估计就直接占满了。
---------------------------------------------------------------
下面再来一个sh直接可以再Linux运行的脚本。
#!/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
直接把此代码保存为sh文件,赋予运行权限,然后直接看上面运行的命令就可以了。
文章来源:https://blog.csdn.net/pansaky/article/details/86599280
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏