Linux系统缓存清理指南:步骤、命令与注意事项
在清理缓存前,需了解Linux系统的主要缓存类型及其作用,避免误操作影响系统性能:
cat file.txt会优先从PageCache读取)。ls /home会快速获取目录内容)。清理缓存前,需用sync命令将内存中的未写入数据(脏页)同步到磁盘,避免数据丢失:
sudo sync
echo 1 | sudo tee /proc/sys/vm/drop_caches
echo 2 | sudo tee /proc/sys/vm/drop_caches
echo 3 | sudo tee /proc/sys/vm/drop_caches
若需快速清理所有缓存,可合并sync与echo命令:
sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
清理前后可通过以下命令监控缓存变化:
free -h:以易读格式(GB/MB)显示内存使用情况,重点关注buff/cache列(缓存占用内存);vmstat 1:实时监控系统内存、CPU状态(cache列表示页面缓存,buff列表示缓冲区缓存);top/htop:查看进程内存占用,定位内存泄漏的进程。通过修改vfs_cache_pressure参数,控制内核回收Dentries和Inodes缓存的积极性(默认值100,值越大回收越积极):
# 临时调整(重启失效)
sudo sysctl -w vm.vfs_cache_pressure=50
# 永久调整(写入配置文件)
echo "vm.vfs_cache_pressure=50" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p  # 生效配置
通过crontab设置定时任务,例如每天凌晨2点清理所有缓存:
crontab -e
添加以下内容:
0 2 * * * sync && echo 3 > /proc/sys/vm/drop_caches
若需系统启动时自动清理缓存,可创建Systemd服务:
sudo nano /etc/systemd/system/clear-cache.service
写入以下内容:
[Unit]
Description=Clear Linux Cache
After=network.target
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo 3 > /proc/sys/vm/drop_caches'
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl enable clear-cache.service
sudo systemctl start clear-cache.service
若系统存在“已删除但仍被进程占用”的文件(可通过lsof | grep deleted查看),清理缓存可释放其占用的内存:
# 查找被删除的文件
lsof | grep deleted
# 清理缓存(需结合sudo权限)
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
free -h显示available内存极少)或调试性能问题时清理缓存,正常运行的系统无需频繁清理。sudo或root权限执行,避免普通用户误操作。