温馨提示×

CentOS如何设置自动回收机制

小樊
38
2025-10-26 03:22:50
栏目: 智能运维

CentOS设置自动回收机制的常见场景及步骤

一、文件/目录自动回收(回收站机制)

1. 启用系统级回收站(推荐)

通过trash-cli工具实现安全的文件删除(移动至回收站而非直接删除),并设置自动清空:

  • 安装工具
    sudo yum install -y trash-cli
    
  • 配置自动清空
    编辑当前用户的crontabcrontab -e),添加以下内容(每天凌晨0点清空回收站,保留30天):
    0 0 * * * /usr/bin/trash-empty -d 30
    
    说明:trash-empty -d 30表示删除回收站中超过30天的文件。

2. 自定义回收站目录(针对特定用户)

若需将删除文件移动至用户主目录下的.trash文件夹:

  • 创建回收站目录
    mkdir -p ~/.local/share/Trash/files
    mkdir -p ~/.local/share/Trash/info
    
  • 创建回收脚本/usr/local/bin/trash):
    #!/bin/bash
    for file in "$@"; do
      mv "$file" ~/.local/share/Trash/files/
    done
    
    赋予执行权限:sudo chmod +x /usr/local/bin/trash
  • 替换默认rm命令
    编辑~/.bashrc,添加别名:
    alias rm='trash'
    
    重新加载配置:source ~/.bashrc

3. 使用systemd-tmpfiles管理临时目录

针对/tmp/var/tmp等系统临时目录,通过systemd-tmpfiles设置自动清理规则:

  • 创建自定义配置文件/etc/tmpfiles.d/local.conf):
    # 清理/tmp目录下超过14天的文件(每天执行一次)
    D /tmp 14d
    # 清理/var/tmp目录下超过7天的文件(每周执行一次)
    D /var/tmp 7d
    
  • 手动触发清理(验证配置):
    sudo systemd-tmpfiles --clean
    
    系统会自动根据配置的时间间隔执行清理。

二、系统内存自动回收

1. 自动清理PageCache、Buffers

通过cron定时任务定期释放内存缓存(需root权限):

  • 创建清理脚本/usr/local/bin/clear_cache.sh):
    #!/bin/bash
    sync && echo 3 > /proc/sys/vm/drop_caches
    echo "$(date): Memory cache cleared" >> /var/log/clear_cache.log
    
    赋予执行权限:sudo chmod +x /usr/local/bin/clear_cache.sh
  • 配置定时任务crontab -e):
    每天凌晨3点执行:
    0 3 * * * /usr/local/bin/clear_cache.sh
    
    说明:echo 3 > /proc/sys/vm/drop_caches会清理PageCache、Buffers和Slab内存。

三、系统垃圾文件自动清理

1. 综合清理脚本(临时文件、日志、缓存、旧内核)

编写脚本清理/tmp/var/log、包缓存、旧内核等垃圾文件:

  • 创建脚本/usr/local/bin/full_cleanup.sh):
    #!/bin/bash
    LOG_FILE="/var/log/full_cleanup.log"
    echo "Cleanup started at $(date)" >> $LOG_FILE
    
    # 清理/tmp目录
    rm -rf /tmp/*
    echo "$(date): /tmp cleaned" >> $LOG_FILE
    
    # 清理7天前的日志文件
    find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
    echo "$(date): Old logs cleaned" >> $LOG_FILE
    
    # 清理YUM缓存
    yum clean all >> $LOG_FILE 2>&1
    echo "$(date): YUM cache cleaned" >> $LOG_FILE
    
    # 清理旧内核(保留当前运行的内核)
    package-cleanup --oldkernels --count=1 -y >> $LOG_FILE 2>&1
    echo "$(date): Old kernels cleaned" >> $LOG_FILE
    
    echo "Cleanup completed at $(date)" >> $LOG_FILE
    
    赋予执行权限:sudo chmod +x /usr/local/bin/full_cleanup.sh
  • 配置定时任务crontab -e):
    每周日凌晨4点执行:
    0 4 * * 0 /usr/local/bin/full_cleanup.sh
    
    说明:package-cleanup --oldkernels需安装yum-utilssudo yum install -y yum-utils)。

注意事项

  • 测试脚本:正式使用前,先在测试环境运行脚本,确认不会误删重要文件。
  • 备份数据:定期备份/var/log/home等关键目录,防止数据丢失。
  • 权限控制:清理系统目录(如/tmp/var/log)需使用root权限,清理用户目录可使用普通用户权限。
  • 日志监控:通过tail -f /var/log/cleanup.log实时查看清理进度,及时排查问题。

0