Linux 清理缓存和释放内存脚本

By | 最新修改:2024-08-17

本文带你一起为 Linux 服务器释放内存,清理无用的缓存,以缓解服务器的内存资源压力。

Linux 服务器用到一定时间,会在内存产生一些缓存数据,如果不及时清理这些缓存,可能会导致服务器的内存不足的情况。

小内存的服务器更是如此,如果不及时清理内存垃圾,到内存中的缓存积累到一定程度,会占满内存空间,这时一定会导致系统运行不畅,甚至有拒绝服务和宕机的风险,最终可能会强制重启机器。

特别提醒:

在桌面系统中要谨慎使用内存清理脚本,笔者深感体会,那酸爽。


如何查看内存中缓存的大小

执行命令 top -d 0.5-d 指定命令界面的刷新时间,此处为 0.5 秒:

top 命令截图


创建释放内存的脚本

废话少说,直接上 Bash Shell 命令添加一个 Linux 下的清理缓存和释放内存空间的 Bash 脚本。此脚本将放置在 /root 目录下,该目录是 root 用户的家目录,因为是服务器,所以经常用 root 来做一些普通用户做不到的事情。

此 Bash 程序只能以 root 用户来运行:

bash -c 'cat > /root/clear-mem-cache.sh <<EOF
#!/bin/bash

# 清理页面缓存
# sync 表示将在内存中的文件系统的数据同步到磁盘上
# 不再需要的内存资源将被释放
sync; echo 1 > /proc/sys/vm/drop_caches

# 清除目录项和 inode 信息缓存
sync; echo 2 > /proc/sys/vm/drop_caches

# 清理页面缓存、目录项和 inode 缓存
sync; echo 3 > /proc/sys/vm/drop_caches

# 清理 Swap 交换空间
swapoff -a && swapon -a
EOF'

给脚本文件加上可执行权限:

chmod +x /root/clear-mem-cache.sh

让脚本文件定时执行

把脚本文件放到系统的 Cron 定时任务中,同时启用定时任务:

# 设置定时任务,每五分钟执行一次
# 并且把输出都重定向到 null 文件
echo "*/5 * * * * root /bin/bash /root/clear-mem-cache.sh 1>/dev/null 2>&1" >> /etc/crontab

# 使用定时任务生效
crontab -uroot /etc/crontab

# 查看定时任务
crontab -uroot -l

后记

本文提供了一个 Linux 系统下的内存缓存清理和释放脚本文件,然后将该文件放进系统的定时任务中,并且使定时任务生效。



程序知路

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com