Linux清理缓存的有效方法及注意事项
Linux系统缓存主要分为三类:PageCache(页面缓存,加速磁盘读写)、dentry(目录项缓存,加速目录查找)、inode(索引节点缓存,加速文件元数据访问)。以下是针对性清理命令:
sudo sync && sudo echo 1 > /proc/sys/vm/drop_caches
sync命令需先执行,将未写入磁盘的脏页(已修改但未保存的数据)同步到磁盘,避免数据丢失。sudo sync && sudo echo 2 > /proc/sys/vm/drop_caches
ls、cd等操作)。sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
free -h
buff/cache(缓存占用)的值。清理后可通过该命令确认缓存是否减少。vmstat 1
free列)、I/O、CPU负载等,帮助判断清理缓存对系统的影响。sudo apt-get clean # 清除所有已下载的软件包(位于/var/cache/apt/archives/)
sudo apt-get autoclean # 仅清除旧版本的软件包
sudo yum clean all # 清除所有缓存(包括软件包、元数据)
sudo snap refresh --purge # 清除Snap应用的旧版本缓存
npm cache clean --force # 清除npm缓存
yarn cache clean # 清除yarn缓存
sudo rm -rf /tmp/* # 清除/tmp目录下的临时文件(重启后自动清理)
sudo rm -rf /var/tmp/* # 清除/var/tmp目录下的临时文件(保留时间较长)
或使用系统工具(如systemd-tmpfiles)配置定时清理规则。
若需要定期自动清理缓存,可通过crontab设置定时任务。例如,每天凌晨2点清理所有缓存:
crontab -e
添加以下内容:
0 2 * * * sync && echo 3 > /proc/sys/vm/drop_caches
保存后,系统将每天自动执行该命令。
sudo获取root权限,否则无法执行。free -h显示available内存过低)或排查内存问题时清理。sync命令是清理缓存的前提,确保数据已写入磁盘,避免因意外断电导致数据丢失。