回收CentOS系统磁盘空间需系统性清理无用文件、优化日志管理,并建立长期维护机制。以下是最有效的实践步骤:
YUM(CentOS 7及以下)或DNF(CentOS 8及以上)包管理器会缓存下载的软件包(位于/var/cache/yum或/var/cache/dnf),占用大量空间。通过以下命令彻底清理:
# CentOS 7及以下
sudo yum clean all
# CentOS 8及以上
sudo dnf clean all
此操作可回收约100MB-1GB空间(取决于缓存大小)。
yum remove或dnf remove移除不再使用的软件(如旧版编辑器、测试工具),避免其依赖文件占用空间。yum autoremove(或dnf autoremove)可删除不再被任何软件依赖的“孤儿包”,进一步释放空间。# 列出已安装内核
rpm -q kernel
# 删除旧内核(保留最新1个)
sudo package-cleanup --oldkernels --count=1
此操作可回收50MB-200MB/旧内核的空间。日志文件(位于/var/log)是磁盘空间的主要消耗者之一。需结合手动清理、logrotate轮转和journald管理:
truncate命令快速清空大日志文件(保留文件权限和inode,避免程序报错):sudo truncate -s 0 /var/log/messages # 清空系统日志
sudo truncate -s 0 /var/log/nginx/access.log # 清空Nginx访问日志
/etc/logrotate.d/下的配置文件(如syslog),设置每日轮转、保留7份、压缩旧日志:/var/log/messages {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root adm
}
手动触发轮转:sudo logrotate -vf /etc/logrotate.conf。# 查看日志占用
journalctl --disk-usage
# 清理7天前的日志
sudo journalctl --vacuum-time=7d
# 限制日志大小为100M
echo "SystemMaxUse=100M" >> /etc/systemd/journald.conf
sudo systemctl restart systemd-journald
此类操作可回收数GB空间(取决于日志量)。使用以下命令快速定位并清理占用空间大的文件(如旧备份、视频、ISO镜像):
sudo find / -type f -size +100M -exec ls -lh {} \; # 列出文件
sudo find / -type f -size +100M -exec rm -f {} \; # 删除文件(谨慎操作)
sudo du -sh /var/* | sort -hr | head -n 10 # 查看/var目录下最大的10个目录
sudo du -sh /* | sort -hr | head -n 10 # 查看根目录下最大的10个目录
重点清理/var/log、/tmp、/home等目录下的无用大文件。/tmp和/var/tmp中的文件通常为临时使用,可定期删除:sudo rm -rf /tmp/* # 清空/tmp
sudo rm -rf /var/tmp/* # 清空/var/tmp
~/.local/share/Trash/files):sudo rm -rf /home/*/.local/share/Trash/*
此类文件无长期价值,可快速回收空间。系统缓存(页面缓存、目录项缓存)可提升性能,但占用空间较大时需手动清理:
# 同步内存到磁盘(避免数据丢失)
sync
# 清理页面缓存、目录项缓存、inode缓存
echo 3 | sudo tee /proc/sys/vm/drop_caches
注意:此操作需root权限,且不会影响正在运行的程序。
通过图形化或命令行工具快速识别大文件/目录,提升清理效率:
sudo yum install ncdu # CentOS 7
sudo dnf install ncdu # CentOS 8+
sudo ncdu / # 扫描根目录
sudo yum install bleachbit
sudo bleachbit
工具可直观展示可清理的项目,避免误删。cron每周自动执行清理脚本(如清理/tmp、日志轮转、ncdu扫描),避免手动遗漏。df -h定期检查磁盘使用率(阈值设为80%),及时触发清理流程。/home、/etc等关键目录,避免误删。rm -rf时需确认路径,防止删除系统关键文件(如/bin、/sbin)。discard挂载选项(mount -o discard /dev/sda1 /mnt)或定期运行fstrim命令,回收未使用块。通过以上步骤,可系统性回收CentOS系统的磁盘空间,提升系统性能并避免空间不足问题。