包管理器(YUM/DNF)的缓存会存储下载的软件包和元数据,长期不清理会占用大量磁盘空间。
yum clean all命令清理所有缓存(包括包文件、元数据、旧元数据等);也可选择性清理,如yum clean packages(仅删除包文件)、yum clean metadata(仅删除元数据)。清理后可通过yum makecache重新生成元数据,提升后续安装速度。dnf clean all命令,功能与YUM类似,适用于DNF包管理器。Linux内核会自动缓存页面(加速文件读取)、目录项(加速目录查找)、inode(加速文件元数据访问),可通过以下命令手动清理(需root权限):
sync;echo 3 | sudo tee /proc/sys/vm/drop_caches;echo 1 | sudo tee /proc/sys/vm/drop_caches;echo 2 | sudo tee /proc/sys/vm/drop_caches。临时文件存储在/tmp、/var/tmp或用户目录(如~/.cache)中,定期清理可释放空间。
sudo rm -rf /tmp/*(/tmp目录文件通常在重启时清除,但可手动清理)、sudo rm -rf /var/tmp/*(/var/tmp文件保留时间更长);rm -rf ~/.cache/*(用户级缓存)、rm -rf ~/.local/share/Trash/*(回收站的文件);systemd-tmpfiles工具(CentOS 7及以上):sudo systemd-tmpfiles --clean(清理由systemd管理的临时文件);sudo find /tmp -type f -mtime +7 -exec rm -f {} \;、sudo find /var/tmp -type f -mtime +7 -exec rm -f {} \;。日志文件(如/var/log目录下的.log文件)会随时间增长占用大量空间,可通过以下方式清理:
journalctl命令(Systemd日志):sudo journalctl --vacuum-time=2weeks(保留最近2周日志)、sudo journalctl --vacuum-size=100M(限制日志大小为100MB);sudo rm -rf /var/log/*.log.*(删除带日期的旧日志文件);logrotate):通过/etc/logrotate.conf设置日志自动轮转策略(如按时间或大小分割),避免日志无限增长。部分应用程序(如Web服务器、数据库)会缓存自身数据,清理后可释放空间:
sudo rm -rf /var/cache/apache2/*(清理Apache缓存);sudo rm -rf /var/cache/nginx/*(清理Nginx缓存);sudo systemctl stop mysqld、sudo rm -rf /var/lib/mysql/*、sudo systemctl start mysqld;sudo redis-cli FLUSHDB(清空当前数据库)、sudo redis-cli FLUSHALL(清空所有数据库);echo 'flush_all' | nc localhost 11211(清空缓存)。通过定时任务(Cron)定期执行清理脚本,避免手动操作:
cleanup.sh),内容如下:#!/bin/bash
sync
echo 3 | sudo tee /proc/sys/vm/drop_caches
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
sudo journalctl --vacuum-time=7d
sudo yum clean all # 或dnf clean all(CentOS 8+)
chmod +x cleanup.sh;crontab -e,添加0 2 * * * /path/to/cleanup.sh。注意事项:
free -h(查看内存)、df -h(查看磁盘空间)确认效果。