Linux系统缓存清理方法
在清理缓存前,建议先通过以下命令了解系统内存及缓存使用情况,避免盲目操作:
free -h:以人类可读格式(GB/MB)显示内存总量、已用内存、空闲内存及-/+ buffers/cache(实际可用内存,即扣除缓存后的空闲内存)。vmstat 1:每秒刷新一次系统虚拟内存统计信息,包括内存、交换区、I/O及CPU活动,可观察缓存变化趋势。Linux系统缓存主要分为三类:页面缓存(PageCache,用于加速文件读取)、目录项缓存(dentry,用于快速查找目录)、inode缓存(inode,用于存储文件元数据)。以下是针对性清理方法:
页面缓存是Linux最常用的缓存类型,用于缓存文件数据。清理命令如下:
sudo sync && sudo echo 1 > /proc/sys/vm/drop_caches
sync:将未写入磁盘的缓存数据同步到磁盘,避免数据丢失;echo 1 > /proc/sys/vm/drop_caches:仅清理页面缓存。dentry和inode缓存用于加速文件系统操作(如查找文件、访问元数据)。清理命令如下:
sudo sync && sudo echo 2 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches:仅清理dentry和inode缓存。若需一次性清理所有缓存,可使用以下命令:
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches:清理页面缓存、dentry和inode缓存。slab缓存用于存储内核对象(如inode、dentry等),若需清理可使用:
sudo sync && sudo echo 1 > /proc/sys/vm/drop_caches
echo 1 > /proc/sys/vm/drop_caches:同时清理slab缓存中的可回收对象。若需每次重启后自动清理缓存,可将清理命令添加到/etc/sysctl.conf文件中:
echo "vm.drop_caches=3" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p # 使配置生效