我经常发现服务器会变得很卡,经过检查发现服务器free的内存会越来越小,大多数内存都被缓存使用了。所以我写了一个自动执行的脚本来定时释放内存。以下是基于centos 7.3操作系统。
1.释放内存脚本: 在根目录创建releasememory.sh,然后把下面的代码贴进去,保存。 该脚本作用是:查询free内存比例,少于20%就清空缓存。 vi releasememory.sh #!/bin/bash mem_total=`free -m | awk 'NR==2' | awk '{print $2}'` mem_free=`free -m | awk 'NR==2' | awk '{print $4}'` mem_used=`free -m | grep Mem | awk '{print $3}'` echo "===========================" >> /var/log/mem.log date >> /var/log/mem.log echo "Memory usage | [Total:${mem_total}MB][Free:${mem_free}MB][Used:${mem_used}MB]" >> /var/log/mem.log if (($mem_used != 0)); then mem_per=0`echo "scale=2;$mem_free/$mem_total" | bc` DATA="$(date -d "today" +"%Y-%m-%d-%H-%M") free percent is : $mem_per" echo $DATA >>/var/log/mem_detect.log mem_warn=0.20 mem_now=`expr $mem_per \> $mem_warn` if (($mem_now == 0)); then sync echo 3 > /proc/sys/vm/drop_caches echo "OK" >> /var/log/mem.log fi fi 2. 给脚本执行权限 #chmod +x releasememory.sh 3. 把脚本添加到系统定时任务: 以下命令是把定时任务放到cron配置文件里,作用是每天1:00执行releasememory.sh脚本。 #echo "0 1 * * * root /root/releasememory.sh" >> /etc/crontab 4.重新加载cron配置和重启cron服务 #service crond reload #service crond restart 5.查看log: /var/log/mem.log /var/log/mem_detect.log