CentOS清理文件系统垃圾的常用方法
包管理器(YUM/DNF)在安装/更新软件时会缓存软件包和元数据,占用/var/cache/yum(CentOS 7及以下)或/var/cache/dnf(CentOS 8及以上)目录空间。
sudo yum clean all清理所有YUM缓存;sudo dnf clean all清理所有DNF缓存。系统中可能存在不再被任何软件依赖的“孤立”软件包,占用额外空间。
sudo yum autoremove(CentOS 7及以下)或sudo dnf autoremove(CentOS 8及以上),自动检测并删除这些无用包。CentOS会保留旧内核以确保系统兼容性,但过多旧内核会占用大量/boot分区空间。
package-cleanup工具保留最新1个内核(避免系统无法启动),命令:sudo package-cleanup --oldkernels --count=1;通过命令定位占用空间大的文件(如大于100MB的文件),再手动删除无用文件:
du -sh /*:查看各顶级目录的磁盘使用情况,定位占用大的目录(如/var、/home);find / -type f -size +100M -exec ls -lh {} \;:查找系统中所有大于100MB的文件,显示详细信息。日志文件(如/var/log/messages、/var/log/secure)会随时间不断增长,占用大量空间。
sudo truncate -s 0 /var/log/xxx.log(将文件大小置为0,保留文件);find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;(删除7天前的.log文件);sudo logrotate -f /etc/logrotate.conf(强制压缩/删除旧日志,默认配置会自动定期执行)。临时文件(如/tmp、/var/tmp目录下的文件)通常是无用的中间文件,占用空间且无需保留。
sudo rm -rf /tmp/*清理/tmp目录;sudo rm -rf /var/tmp/*清理/var/tmp目录;系统缓存(页缓存、目录项缓存)用于提升性能,但过多缓存会占用内存和磁盘空间。
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches:
sync:将内存中的数据同步到磁盘(避免数据丢失);echo 3:清理页缓存、目录项缓存和inode缓存(不影响系统运行)。若不熟悉命令行,可使用图形化工具简化清理流程:
sudo yum install ncdu(CentOS 7及以下)或sudo dnf install ncdu(CentOS 8及以上),运行sudo ncdu /即可扫描根目录;sudo yum install bleachbit或sudo dnf install bleachbit,运行sudo bleachbit即可打开图形界面。通过编写脚本定期自动执行清理任务,减少手动操作:
cleanup_centos.sh):#!/bin/bash
LOG_FILE="/var/log/cleanup.log"
echo "Cleanup started at $(date)" >> $LOG_FILE
# 清理YUM缓存
sudo yum clean all >> $LOG_FILE 2>&1
# 清理临时文件
sudo rm -rf /tmp/* >> $LOG_FILE 2>&1
sudo rm -rf /var/tmp/* >> $LOG_FILE 2>&1
# 清理旧日志
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \; >> $LOG_FILE 2>&1
# 清理旧内核
sudo package-cleanup --oldkernels --count=1 >> $LOG_FILE 2>&1
# 清理系统缓存
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches >> $LOG_FILE 2>&1
echo "Cleanup completed at $(date)" >> $LOG_FILE
chmod +x cleanup_centos.sh;crontab -e,添加0 2 * * * /path/to/cleanup_centos.sh >> /var/log/cleanup.log 2>&1;注意事项:
/home、/etc目录),避免误删;secure日志可能包含登录记录);