温馨提示×

centos清理系统缓存的方法有哪些

小樊
56
2025-10-02 22:08:01
栏目: 智能运维

CentOS清理系统缓存的常见方法

1. 清理包管理器缓存

包管理器(YUM/DNF)的缓存会存储下载的软件包和元数据,长期不清理会占用大量磁盘空间。

  • CentOS 7及以下(YUM):使用yum clean all命令清理所有缓存(包括包文件、元数据、旧元数据等);也可选择性清理,如yum clean packages(仅删除包文件)、yum clean metadata(仅删除元数据)。清理后可通过yum makecache重新生成元数据,提升后续安装速度。
  • CentOS 8及以上(DNF):使用dnf clean all命令,功能与YUM类似,适用于DNF包管理器。

2. 清理系统页面缓存、目录项缓存、inode缓存

Linux内核会自动缓存页面(加速文件读取)、目录项(加速目录查找)、inode(加速文件元数据访问),可通过以下命令手动清理(需root权限):

  • 同步数据到磁盘(避免数据丢失):sync
  • 清理所有缓存(页面+目录项+inode):echo 3 | sudo tee /proc/sys/vm/drop_caches
  • 仅清理页面缓存:echo 1 | sudo tee /proc/sys/vm/drop_caches
  • 仅清理目录项和inode缓存:echo 2 | sudo tee /proc/sys/vm/drop_caches

3. 清理临时文件

临时文件存储在/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管理的临时文件);
  • 查找并删除旧临时文件(如7天前):sudo find /tmp -type f -mtime +7 -exec rm -f {} \;sudo find /var/tmp -type f -mtime +7 -exec rm -f {} \;

4. 清理日志文件

日志文件(如/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设置日志自动轮转策略(如按时间或大小分割),避免日志无限增长。

5. 清理特定应用程序缓存

部分应用程序(如Web服务器、数据库)会缓存自身数据,清理后可释放空间:

  • Apachesudo rm -rf /var/cache/apache2/*(清理Apache缓存);
  • Nginxsudo rm -rf /var/cache/nginx/*(清理Nginx缓存);
  • MySQL/MariaDB:停止服务后删除数据目录(需备份),sudo systemctl stop mysqldsudo rm -rf /var/lib/mysql/*sudo systemctl start mysqld
  • Redissudo redis-cli FLUSHDB(清空当前数据库)、sudo redis-cli FLUSHALL(清空所有数据库);
  • Memcachedecho 'flush_all' | nc localhost 11211(清空缓存)。

6. 自动化清理(可选)

通过定时任务(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
  • 添加定时任务(如每天凌晨2点执行):crontab -e,添加0 2 * * * /path/to/cleanup.sh

注意事项

  • 清理缓存前请备份重要数据(如数据库、用户文件);
  • 生产环境建议在低峰时段操作,避免影响系统性能;
  • 清理后可通过free -h(查看内存)、df -h(查看磁盘空间)确认效果。

0