文章目录
前言
随着服务器的运行,内存会被越来越多的缓存占据,这个时候就需要自动释放一些服务起内存缓存了。
一、手动清理
1.查询服务器内容占用
free -g
2.同步
sync
3.清理
cat /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
提示
echo 0 是不释放缓存
echo 1 是释放页缓存
ehco 2 是释放dentries和inodes缓存
echo 3 是释放 1 和 2 中说道的的所有缓存
二、自动清理
1.创建自动清理脚本dropcache.sh(注意设置脚本可执行权限)
#!/bin/bash
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`
echo "===========================" >> /home/dropcache.log
date >> /home/dropcache.log
echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /home/dropcache.log
#如果可用内存小于5.5G则进行清理释放
if [ $free -le 55000 ] ; 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/spool/cron/delcache.log
else
echo "Not required" >> /home/dropcache.log
fi
2.记录自动清理日志dropcache.log
===========================
Wed Sep 13 17:30:31 CST 2023
Memory usage | [Use:27759MB][Free:306MB]
===========================
Wed Sep 13 17:30:56 CST 2023
Memory usage | [Use:27734MB][Free:4056MB]
===========================
Mon Oct 23 10:00:01 CST 2023
Memory usage | [Use:31160MB][Free:314MB]
3.设置定时器
在命令行中执行(以root用户登录)
crontab -e
会打开一个文件,按字母 i ,进入编辑模式,输入定时任务表达式
#定时执行的脚本,一定要使用绝对路径
0 6 * * * /home/dropcache.sh
保存文件
查看是否创建成功
crontab -l
查看所有用户的crontab任务
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}