温馨提示×

CentOS如何清理磁盘空间

小樊
55
2025-09-22 06:49:06
栏目: 云计算

一、查看磁盘使用情况(清理前必备)
在清理前,需先明确磁盘空间占用情况,定位大文件或目录。常用命令:

  • df -h:查看各挂载点(如根分区//home)的总大小、已用空间、可用空间及使用百分比,快速识别空间不足的分区。
  • du -sh /*:统计根目录下各一级目录(如/usr/var/home)的大小,找出占用空间大的顶级目录。
  • find / -type f -size +100M -exec ls -lh {} \;:查找系统中大于100MB的文件,结合-exec rm -f {} \;可批量删除(需谨慎确认文件用途)。

二、清理包管理器缓存(快速释放空间)
CentOS的包管理器(yum/dnf)会缓存下载的RPM包和元数据,占用/var/cache/yum(CentOS 7)或/var/cache/dnf(CentOS 8+)目录空间。

  • CentOS 7(yum
    sudo yum clean all  # 清理所有缓存(元数据、RPM包、旧头文件)
    
  • CentOS 8及以上(dnf
    sudo dnf clean all  # 功能同yum clean all,兼容性更好
    

此操作可释放约100MB-1GB空间(取决于缓存大小)。

三、删除旧的内核版本(避免内核堆积)
CentOS会保留旧内核以备回滚,但过多旧内核会占用/boot分区(通常空间较小)。

  • 查看已安装内核
    rpm -qa | grep kernel  # 列出所有内核包(按安装时间排序,最新内核在前)
    
  • 删除旧内核(保留最新1个)
    sudo package-cleanup --oldkernels --count=1  # 自动删除除最新外的所有旧内核
    

或手动指定旧内核版本(如kernel-3.10.0-1127.el7.x86_64):

sudo yum remove kernel-<旧版本号>  # CentOS 7
sudo dnf remove kernel-<旧版本号>  # CentOS 8+

注意:不要删除当前正在使用的内核(可通过uname -r查看)。

四、清理临时文件(无用文件快速释放)
临时文件通常存放在/tmp(临时文件,重启后可能被清除)和/var/tmp(长期临时文件)目录,占用大量空间。

sudo rm -rf /tmp/*  # 清空/tmp目录(确保无程序正在使用其中的文件)
sudo rm -rf /var/tmp/*  # 清空/var/tmp目录

注意:部分应用程序(如浏览器、数据库)可能在/tmp中存储临时数据,清理前建议关闭相关程序。

五、清理日志文件(避免日志膨胀)
日志文件(如/var/log/messages/var/log/httpd/access_log)会随系统运行不断增长,占用/var/log分区空间。

  • 手动清空日志文件
    sudo truncate -s 0 /var/log/*.log  # 清空所有.log文件(保留文件本身,仅删除内容)
    sudo rm -rf /var/log/*.log.*  # 删除.log.*文件(如.gz压缩日志)
    
  • 使用logrotate自动化管理
    logrotate是CentOS自带的日志轮转工具,可自动压缩、删除旧日志。编辑配置文件/etc/logrotate.conf,调整rotate(保留日志份数)、size(日志大小阈值)等参数,或手动触发轮转:
    sudo logrotate -f /etc/logrotate.conf  # 强制立即轮转
    
  • 清理特定服务日志
    如清理Apache日志:
    sudo journalctl --vacuum-time=2weeks  # 清理systemd日志(保留最近2周)
    sudo find /var/log/httpd -type f -name "*.log" -mtime +7 -exec rm -f {} \;  # 删除7天前的Apache日志
    

六、查找并删除大文件/目录(针对性释放空间)
若上述方法释放空间不足,可通过以下命令查找并删除占用空间大的文件或目录:

  • 查找大文件
    find / -type f -size +500M -exec ls -lh {} \;  # 查找大于500MB的文件
    
    结合-exec rm -f {} \;可批量删除(需确认文件用途,避免误删系统文件)。
  • 排序目录大小
    du -sh /var/* | sort -rh | head -n 10  # 查看/var目录下最大的10个目录
    
    根据输出结果,进入大目录(如/var/log/var/lib/mysql)删除不必要的文件(如旧数据库备份、日志)。

七、使用工具辅助清理(可视化操作)
若不熟悉命令行,可使用图形化工具更直观地清理磁盘:

  • ncdu(命令行工具)
    安装:sudo yum install ncdu(CentOS 7)或sudo dnf install ncdu(CentOS 8+);
    使用:sudo ncdu /,通过交互式界面查看目录大小,按d键删除文件/目录。
  • Baobab(图形化工具)
    安装:sudo yum install baobab
    使用:baobab,选择要扫描的目录(如/),查看大文件分布,右键删除。
  • bleachbit(图形化工具)
    安装:sudo yum install bleachbit
    使用:sudo bleachbit,选择要清理的项目(如“系统缓存”“日志文件”“临时文件”),点击“清理”。

八、定期维护(预防空间不足)
为避免磁盘空间频繁不足,建议设置定时任务(cron)定期执行清理操作:

  • 编辑定时任务:crontab -e
  • 添加以下内容(每周日凌晨3点清理临时文件、日志):
    0 3 * * 0 /usr/bin/find /tmp -type f -delete && /usr/bin/find /var/tmp -type f -delete && /usr/bin/journalctl --vacuum-time=2weeks
    
    注意:根据实际需求调整清理频率和范围,避免误删重要文件。

0