温馨提示×

如何彻底清理CentOS系统垃圾

小樊
47
2025-10-05 02:18:45
栏目: 智能运维

一、清理临时文件
临时文件是系统垃圾的主要来源之一,通常存储在/tmp/var/tmp及用户目录的.cache.local/share/Trash中。

  • 手动删除系统临时文件:使用sudo rm -rf /tmp/*清除/tmp目录下的所有临时文件(系统重启后会重新创建);同理,sudo rm -rf /var/tmp/*清理/var/tmp目录。
  • 清理用户临时文件rm -rf ~/.cache/*删除当前用户的缓存文件,rm -rf ~/.local/share/Trash/*清空回收站中的文件。
  • 定时自动清理:通过systemd-tmpfiles工具设置定时规则(如编辑/etc/tmpfiles.d/cleanup.conf添加w /tmp 1777 root root -,表示每周清理/tmp),或添加cron任务(如0 3 * * * root rm -rf /tmp/*,每天凌晨3点执行)。

二、清理包管理器缓存
包管理器(yum/dnf)下载的RPM包和元数据会占用大量磁盘空间,需定期清理。

  • CentOS 7及以下(yum):使用sudo yum clean all命令清理所有缓存(包括已下载的RPM包、元数据);也可单独清理元数据(sudo yum clean metadata)或RPM包(sudo yum clean packages)。
  • CentOS 8及以上(dnf):使用sudo dnf clean all命令,功能与yum类似,覆盖所有缓存类型。

三、清理日志文件
日志文件(如/var/log/messages/var/log/secure)会随时间增长占用大量空间,需合理清理。

  • 使用journalctl清理系统日志sudo journalctl --vacuum-time=2weeks删除两周前的日志;sudo journalctl --vacuum-size=100M将日志限制在100MB以内。
  • 手动清理特定日志sudo rm -f /var/log/messages(系统消息日志)、sudo rm -f /var/log/secure(认证日志)等,操作前需确认日志无重要信息。
  • 配置logrotate自动轮转:通过logrotate工具(默认已安装)自动压缩、删除旧日志,编辑/etc/logrotate.conf调整轮转策略(如保留7天日志)。

四、清理无用软件包及依赖
卸载软件后,残留的无用依赖会占用空间,需自动检测并清理。

  • 列出已安装软件sudo yum list installed(CentOS 7)或sudo dnf list installed(CentOS 8+),查看不需要保留的软件。
  • 删除特定软件sudo yum remove package_name(如sudo yum remove firefox)或sudo dnf remove package_name
  • 自动清理无用依赖sudo yum autoremove(CentOS 7)或sudo dnf autoremove(CentOS 8+),删除不再被任何软件依赖的无用包。

五、清理旧内核
旧内核版本会占用磁盘空间,且不会自动删除,需手动清理。

  • 列出已安装内核rpm -q kernel,显示所有已安装的内核版本(当前使用的内核不会被列出)。
  • 删除旧内核sudo yum remove kernel-version(如sudo yum remove kernel-3.10.0-1160.el7.x86_64);或使用package-cleanup工具(需安装yum-utils):sudo package-cleanup --oldkernels --count=2,保留最近2个内核版本。

六、查找并清理大文件/目录
使用工具快速定位占用空间大的文件或目录,针对性清理。

  • 使用ncdu工具:安装sudo yum install ncdu(CentOS 7)或sudo dnf install ncdu(CentOS 8+),运行sudo ncdu /扫描根目录,通过界面查看大文件/目录,按d键删除。
  • 使用find命令sudo find / -type f -size +100M -exec ls -lh {} \;查找大于100MB的文件,sudo find / -type f -size +500M -exec rm -f {} \;删除大于500MB的文件(操作前需确认文件用途)。

七、清理Docker日志(若有Docker服务)
Docker容器的日志文件会快速增长,需定期清理。

  • 清空单个容器日志docker ps获取容器ID,sudo truncate -s 0 /var/lib/docker/containers/container_id/container_id-json.log清空指定容器日志。
  • 全局清理Docker日志sudo find /var/lib/docker/containers/ -name "*.log" -exec truncate -s 0 {} \;清空所有容器日志。

注意事项

  • 备份重要数据:清理前备份/home/etc等关键目录,防止误删。
  • 谨慎使用rm -rf:该命令会递归删除文件,避免对系统关键目录(如/usr/bin)操作。
  • 定期执行:建议每月执行一次全面清理,保持系统整洁。

0