在清理缓存前,需先明确系统内存及缓存的使用状态,避免过度清理影响系统性能。常用命令:
free -h:查看内存使用情况(重点关注“buff/cache”列,即缓冲区与缓存的总和);vmstat 1 5:查看虚拟内存统计信息(cache列表示文件缓存占用,“si/so”列表示交换分区读写,若数值过高可能需清理);top/htop:实时查看进程内存占用,定位高内存消耗的进程。YUM(CentOS 7及以下)/DNF(CentOS 8及以上)会缓存下载的软件包以加快后续安装速度,定期清理可释放磁盘空间。
sudo yum clean all(清理所有YUM缓存,包括下载的软件包、元数据等);sudo dnf clean all(功能同YUM,适用于CentOS 8+)。Linux系统会自动利用空闲内存作为页面缓存(Page Cache,用于加速文件读写)、目录项缓存(dentry,用于快速查找目录)和索引节点缓存(inode,用于存储文件元数据)。可通过以下命令手动清理:
sync; echo 1 > /proc/sys/vm/drop_caches;sync; echo 2 > /proc/sys/vm/drop_caches;sync; echo 3 > /proc/sys/vm/drop_caches。sync命令用于将内存中的数据同步到磁盘,避免数据丢失,建议每次清理前执行。系统临时文件(如/tmp目录下的文件)可能占用大量空间,尤其是长期运行的服务器。可通过以下命令清理:
sudo rm -rf /tmp/*(删除/tmp下所有文件,需谨慎操作,避免删除正在使用的临时文件);sudo journalctl --vacuum-time=3d(保留最近3天的系统日志,减少日志占用);或手动删除/var/log下旧日志(如sudo rm -rf /var/log/*.log.1)。Slab分配器用于管理内核对象(如进程描述符、文件对象等),过度占用可能导致内存浪费。可通过以下命令查看和清理:
sudo slabtop(实时查看Slab缓存占用排名,重点关注“OBJS active”列);echo 1 > /proc/sys/vm/slub_debug(标记需要清理的缓存),sync; echo 0 > /proc/sys/vm/slub_debug(执行清理)。通过调整内核参数,可减少缓存过度占用或优化缓存回收策略:
sudo sysctl vm.swappiness=10;/etc/sysctl.conf中添加vm.swappiness=10,然后执行sudo sysctl -p。sudo sysctl vm.vfs_cache_pressure=50;/etc/sysctl.conf中添加vm.vfs_cache_pressure=50,然后执行sudo sysctl -p。/etc/crontab中添加0 0 1 * * root echo 3 > /proc/sys/vm/drop_caches。htop(实时监控内存、缓存使用)、vmstat(查看缓存变化趋势)、iostat(监控磁盘I/O与缓存关系)等工具,及时发现缓存异常。top查看RES列持续增长),或优化应用程序的内存使用。