cron定时任务+释放内存脚本释放服务器缓存

我经常发现服务器会变得很卡,经过检查发现服务器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

你可能感兴趣的:(运维)