在CentOS系统中,随着时间的推移,系统会产生大量的垃圾文件、缓存数据和不再使用的日志文件,这些文件不仅占用宝贵的磁盘空间,还可能影响系统的性能,定期进行垃圾清理是维护系统稳定性和性能的重要任务,本文将详细介绍如何在CentOS中有效地进行垃圾清理,包括清理缓存、旧内核、不必要的软件包、日志文件和临时文件等。
一、查看存储空间
在进行垃圾清理之前,了解当前系统的存储使用情况是非常重要的,可以通过以下命令查看:

1、查看整体磁盘使用情况:
- df h
该命令可以显示所有挂载点的磁盘使用情况,以易读的格式(如GB)呈现。
2、查看特定目录的使用情况:
- du sh /var/log
该命令用于查看指定目录及其子目录的总大小。s
表示汇总每个参数指定的总大小,h
以人类可读的格式显示。
二、清理缓存
YUM(或DNF)包管理器会缓存下载的软件包和头文件,以便下次安装时加快速度,这些缓存文件可能会占用大量磁盘空间。
1、清理YUM缓存:

- sudo yum clean all
该命令会清理所有YUM缓存的文件,包括已下载的软件包、头文件和数据库缓存。
三、清理旧的内核
随着新内核的安装,旧的内核版本会保留在系统中,占用磁盘空间,可以使用packagecleanup
命令删除旧的内核版本,但保留最新的两个内核版本。
- sudo packagecleanup oldkernels count=2
如果希望删除所有旧内核,可以使用以下命令:
- sudo packagecleanup oldkernels count=1
四、删除不必要的软件包和依赖项
有时,软件包的依赖关系可能会变得不再需要,但仍留在系统中,可以使用yum autoremove
命令来删除这些孤立的软件包。
- sudo yum autoremove
还可以手动检查并删除孤立的软件包:
- sudo packagecleanup quiet leaves excludebin
这些命令会列出不再被任何软件包依赖的软件包,您可以手动决定是否删除。
五、清理日志文件
系统和应用生成的日志文件可能会占用大量磁盘空间,可以移除不再需要的日志文件。
1、清理journalctl日志:
- sudo journalctl vacuumsize=100M
该命令将清理大于100MB的日志文件。
2、清理/var/log目录:
- sudo find /var/log type f name "*.log" exec truncate size 0 {} \;
该命令会清空/var/log目录下的所有日志文件。
六、清理临时文件
系统在运行过程中会生成许多临时文件,这些文件通常位于/tmp和/var/tmp目录下,可以安全地删除这些文件:
- sudo rm rf /tmp/*
- sudo rm rf /var/tmp/
七、使用脚本自动清理磁盘空间
为了方便定期清理,可以编写一个Shell脚本来自动执行上述清理任务,以下是一个示例脚本:
- #!/bin/bash
- 记录清理前的可用空间
- before=$(df h / | awk '/\// {print $4}')
- 清理yum缓存
- sudo yum clean all
- 清理旧的日志文件
- find /var/log type f name "*.log" exec truncate size 0 {} \;
- 清理回收站
- echo "Emptying trash..."
- rm rf /root/.local/share/Trash/*/** &>/dev/null
- 清理历史命令记录
- history c
- history w
- 清理临时文件
- rm rf /tmp/*
- rm rf /var/tmp/*
- 清理旧的系统备份
- rm rf /var/backups/*
- 清理不再使用的软件包和依赖项
- sudo yum autoremove y
- 清理旧的内核
- sudo packagecleanup oldkernels count=1 y
- 清理缓存文件
- find /var/cache type f exec rm rf {} \;
- 清理用户缓存
- for user in $(ls /home); do
- rm rf /home/$user/.cache/*
- done
- 清理邮件日志
- find /var/mail type f exec truncate size 0 {} \;
- 清理core文件
- find / name "core" delete
- 清理旧的会话文件
- find /var/lib/php/session type f delete
- 清理系统邮件队列
- service postfix stop
- rm rf /var/spool/postfix/*
- service postfix start
- 清理Docker容器日志文件(如果安装了Docker)
- docker rm v $(docker ps a q) &>/dev/null
- docker image prune a force &>/dev/null
- docker volume prune f &>/dev/null
- docker container prune f &>/dev/null
- docker system prune af &>/dev/null
- docker images prune a force &>/dev/null
- docker volume prune f &>/dev/null
- docker container prune f &>/dev/null
- docker network prune f &/dev/null
- docker system prune af &>/dev/null &>/dev/null
- docker container prune f &>/dev/null &>/dev/null
- docker image prune f &>/dev/null &>/dev/null
- docker volume prune f &>/dev/null &>/dev/null
- docker container prune f &>/dev/null &>/dev/null
- docker network prune f &>/dev/null &>/dev/null &>/dev/null
- docker system prune af &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>/dev/null &>;
- docker image prune a force &>/dev/null &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;;
- docker image prune a force &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f y &>;
- docker image prune a force &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &>;
- docker image prune f &>;
- docker volume prune f &>;
- docker container prune f &>;
- docker network prune f &>;
- docker system prune af &>;
- docker container prune f &0;
- docker image prune a force &0;
- docker volume prune f &0;
- docker container prune f &0;
- docker network prune f &0;
- docker system prune af &0;
- docker container prune f &0;
- docker image prune f &0;
- docker volume prune f &0;
- docker container prune f &0;
- docker network prune f &0;
- docker system prune af &0;
- docker container prune f &0;
- docker image prune f &0;
- docker volume prune f &0;
- docker container prune f &0;
- docker network prune f &0;
- docker system prune af &0;
- docker container prune f &0;
- docker image prune f &0;
- docker volume prune f &0;
- docker container prune f &0;
- docker network prune f &0;
- docker system prune af &0;
- docker container prune f &0;
- docker image prune f y &0;
- docker volume prune f &0;
- docker container prune f &0;
- docker network prune f &0;
- docker system prune af &0;
- docker container prune f &0;
- docker image prune f &0;
- docker volume prune f &0;;
- 计算清理前后的空间变化量并输出结果,如果存在Docker环境,则还需额外处理Docker相关的日志和数据卷,这部分代码可以根据实际需求添加或调整,如果系统上没有安装Docker,则可以跳过与Docker相关的清理操作,同样地,如果需要清理其他类型的日志或临时文件,也可以在此脚本基础上进行扩展和定制,通过定期运行此脚本,可以有效地释放磁盘空间并保持系统的良好性能状态。