现在需求,要求内存稳定占用一定比率,不能像之前一样使用资源消耗脚本,因为那样内存使用只会在一定时间内波动。
思路:
1、在Linux中挂载tmpfs是一种将内存作为文件系统使用的方法。tmpfs可以创建一个临时文件系统,将文件保存在内存中,这样就能消耗一定的内存空间
2、使用dd命令生成tmpfs文件,并挂载
3、检查当前内存使用率,使得内存利用率大于60%
脚本如下:
#!/bin/bash
#通过以下脚本可占用$USE大小的内存,达到提高内存使用率的目的
# 设置使用率大小
USE=60
# 获取内存信息
get_mem_info()
{
# 剩余内存
Free_Mem=$(free -m |grep Mem |awk '{print $NF}')
# 总内存
All_Mem=$(free -m |grep Mem |awk '{print $2}')
# 当前使用内存
Now_Use=$((All_Mem - Free_Mem))
# 当前使用率
Now_Rate=$((Now_Use * 100 / All_Mem))
}
#调用函数
get_mem_info
echo "空闲内存: $Free_Mem M"
echo "当前内存使用: $Now_Use M"
echo "当前内存使用率: $Now_Rate %"
echo "新增内存大小: $Set_Use M"
# 判断当前内存使用率是否小于 设置使用率
# 如果小于,则 dd创建 一定数量的 1G文件
if [[ $Now_Rate -lt $USE ]]; then
# 新增文件大小
Set_Use=$((All_Mem * (USE - Now_Rate) / 100))
# 创建 临时挂载目录
mkdir /tmp/memory
# 挂在前先卸载
umount /tmp/memory
mount -t tmpfs -o size=$USE% tmpfs /tmp/memory
# 生成几个1G的文件
file_count=$((Set_Use / 1000))
for ((a=1;a<=file_count;a++))
do
dd if=/dev/zero bs=10M count=124 of=/tmp/memory/tmpfile_can_delete_$a
done
else
echo "当前使用率大于 $USE"
fi
# 再次调用获取当前内存信息
get_mem_info
echo "空闲内存: $Free_Mem M"
echo "当前内存使用: $Now_Use M"
echo "当前内存使用率: $Now_Rate %"
echo "新增内存大小: $Set_Use M"
使用效果