Linux服务器buff-cache过高,定时任务自动清理缓存
2022年7月4日大约 2 分钟
上一级页面:index-la
前言
Linux系统buff/cache 中缓存数据占用内存过高,定时清理buff/cache ,释放系统内存
一、创建释放缓存脚本
创建/编辑脚本文件:
sudo mkdir /opt/script
sudo mkdir /opt/script/cron
sudo vim /opt/script/cron/cleanCache.sh
#!/bin/bash
#description: 清除缓存
echo "10s后开始清除缓存"
# 写入硬盘,防止数据丢失
sync;sync;sync
# 延迟10秒
sleep 10
echo 3 > /proc/sys/vm/drop_caches
echo "结束清除缓存"
要释放 pagecache,请使用 echo 1
要释放 dentries and inodes,请使用 echo 2
要释放 pagecache、dentries 和 inodes,请使用 echo 3
别忘记给权限
sudo chmod +x /opt/script/cron/cleanCache.sh
二、定时任务设置
由于清理缓存的权限问题,首先应当切换到root用户
su - root
打开配置文件:
crontab -e
添加需要定时执行的脚本文件
以下为每5分钟自动执行脚本文件
*/5 * * * * sh /opt/script/cron/cleanCache.sh
以下为每1小时自动执行脚本文件
0 */1 * * * sh /opt/script/cron/cleanCache.sh
这个用法很简单
# minute (m), hour (h), day of month (dom), month (mon),
# m h dom mon dow command
操作符有
*
取值范围内的所有数字/
每过多少个数字-
从X到Z,
散列数字
每1分钟执行一次myCommand
* * * * * myCommand
实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb
0 */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 * * * /etc/init.d/smb restart
三、设置cron开机自启动
systemctl start cron.service
systemctl enable cron.service
查看定时任务是否执行成功:
cat /var/log/cron.log | grep cleanCache