Centos 8.*自动定期清理cache化内存脚本

古哥 网站咨询

本脚本,在Centos 8.2系统测试可以正常使用,其他平台请自行测试

今天,给各位分享一个可以定期清理cache内存的脚本,根据可用内存自动判断是否需要清理cache。

脚本内容如下:

#!/bin/bash
#该脚本用于清理buff/cache,释放内存

used=`free -m | awk ‘NR==2’ | awk ‘{print $3}’`
free=`free -m | awk ‘NR==2’ | awk ‘{print $4}’`

echo “===========================” >> /var/log/mem.log
date >> /var/log/mem.log
echo “Memory usage | [Use:${used}MB][Free:${free}MB]” >> /var/log/mem.log

#设置free小于900M时就开始进行清理
if [ $free -le 900 ] ; then
sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches
echo “OK” >> /var/log/mem.log
else
echo “Not required” >> /var/log/mem.log
fi

在opt/shell目录新建一个freemem.sh,上面的脚本内容放于该文件中,请注意编码改为utf-8!换行编码改为Unix,否则会报错的!

接着,运行如下命令:

sh /opt/shell/freemem.sh

查看/var/log/mem.log日志输出是否正常,或者运行命令是否报错!

接着输入crontab -e,进入周期任务编辑模式

输入i键,任意行插入如下代码:

*/30 * * * * sh /opt/shell/freemem.sh

摁下esc,退出编辑模式

输入:wq(英文的:),保存并退出crontab

如此即可自动检查。

回复

共3条回复 我来回复
  • 古哥的头像
    古哥
    联系邮箱:admin#iymark.com
    评论

    需要注意的是,上述脚本的意思大概是:当可用内存少于900M时,自动清理Cache内存!请自信修改900那个数值。不知道什么是Cache内存的,自行科普。可以通过free -m命令查看内存分配情况:

    [root@iZwz98biiph4vhee88vxj8Z ~]# free -m
    total used free shared buff/cache available
    Mem: 3790 1343  1519      30      927            2193
    Swap: 4095    0    4095

    最后,防止大家不知道如何更换脚本编码方式及脚本换行编码方式,把改好的脚本,放于网盘,供各位参考。

    下载链接:https://t00y.com/file/30185816-471999810

    提取码:533960

    2020年11月20日 23:29 0条评论
  • 古哥的头像
    古哥
    联系邮箱:admin#iymark.com
    评论

    当然,你也可以不添加周期任务。自己手动执行如下命令

    sh /opt/shell/freemem.sh

    2020年11月20日 23:35 0条评论
  • 古哥的头像
    古哥
    联系邮箱:admin#iymark.com
    评论

    2020112015404658

    我临时改了下脚本里的900M free内存为1500M内存,测试脚本可以成功释放Cache内存!!!

    2020年11月20日 23:41 0条评论
微信小程序
微信公众号