centos

如何定制centos清理计划

小樊
42
2025-11-01 17:00:04
栏目: 智能运维

一、清理前的准备工作

  1. 备份重要数据:清理前务必备份系统关键数据(如/etc、/home、数据库文件等),可使用rsync -a /path/to/important/data /backup/locationtar -czvf backup.tar.gz /path/to/data命令,避免误删导致数据丢失。
  2. 检查磁盘空间:通过df -h查看磁盘分区使用率,du -sh /*分析根目录下各目录大小,定位占用空间大的目录(如/var、/home),为清理提供依据。

二、常见清理任务清单

  1. 清理临时文件
    • /tmp目录:存储系统运行时的临时文件,可每天清理(rm -rf /tmp/*)。
    • /var/tmp目录:存储长期临时文件(如软件安装包),可每周清理(rm -rf /var/tmp/*)。
  2. 清理日志文件
    • 使用journalctl工具清理系统日志:journalctl --vacuum-time=3d(删除3天前的日志)或journalctl --vacuum-size=100M(限制日志总大小为100MB)。
    • 手动清理/var/log目录下的旧日志:find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;(删除7天前的.log文件)。
  3. 清理包管理器缓存
    • CentOS 7及以下(yum):yum clean all(清理缓存包、元数据)。
    • CentOS 8及以上(dnf):dnf clean all(同yum功能)。
  4. 删除无用软件包
    • 卸载不再需要的软件:yum remove package_namednf remove package_name(替换为实际软件名)。
    • 自动清理无用依赖:yum autoremovednf autoremove(删除未被任何软件依赖的包)。
  5. 清理系统缓存
    • 清除页面缓存、目录项缓存:sync; echo 3 > /proc/sys/vm/drop_caches(sync同步数据后,写入3表示清理三类缓存)。
  6. 清理旧内核
    • 保留最新1个内核,删除旧内核:package-cleanup --oldkernels --count=1(需安装yum-utils包,适用于CentOS 7及以上)。
  7. 清理大文件/旧文件
    • 查找大于100MB的文件:find /path/to/search -type f -size +100M -exec ls -lh {} \;(替换为需搜索的路径,如/)。
    • 查找30天未修改的文件:find /path/to/search -type f -mtime +30 -exec rm -f {} \;(谨慎操作,确认文件无用后再删除)。
  8. 清理备份文件
    • 删除过期的系统备份(如/backup目录下超过30天的文件):find /backup -type f -mtime +30 -exec rm -f {} \;
  9. 使用清理工具(可选)
    • 安装BleachBit:yum install bleachbit(CentOS 7及以下)或dnf install bleachbit(CentOS 8及以上),通过图形界面清理缓存、临时文件、日志等。

三、自动化清理计划配置

  1. 使用Cron定时任务
    • 编辑当前用户的crontab:crontab -e,添加以下示例任务(按需调整时间):
      # 每天凌晨2点清理/tmp目录
      0 2 * * * rm -rf /tmp/*
      # 每周日凌晨3点清理/var/tmp目录
      0 3 * * 0 rm -rf /var/tmp/*
      # 每天凌晨4点清理日志(保留7天)
      0 4 * * * journalctl --vacuum-time=7d
      # 每周一凌晨5点清理YUM缓存
      0 5 * * 1 yum clean all
      # 每月1日凌晨6点清理旧内核
      0 6 1 * * package-cleanup --oldkernels --count=1
      
    • 保存退出后,Cron会自动执行任务(可通过crontab -l查看当前用户的定时任务)。
  2. 使用Systemd定时任务(可选)
    • 创建服务文件:sudo vi /etc/systemd/system/cleanup.service,添加以下内容:
      [Unit]
      Description=System Cleanup Service
      
      [Service]
      Type=oneshot
      ExecStart=/bin/bash -c "yum clean all && rm -rf /tmp/* && rm -rf /var/tmp/*"
      
    • 创建定时器文件:sudo vi /etc/systemd/system/cleanup.timer,添加以下内容:
      [Unit]
      Description=Run System Cleanup Daily
      
      [Timer]
      OnCalendar=daily
      Persistent=true
      
      [Install]
      WantedBy=timers.target
      
    • 启用并启动定时器:sudo systemctl enable cleanup.timer && sudo systemctl start cleanup.timer
  3. 编写清理脚本
    • 创建脚本文件(如/usr/local/bin/cleanup.sh),添加清理步骤(参考上述任务清单),并赋予执行权限:
      #!/bin/bash
      echo "Starting system cleanup..."
      rm -rf /tmp/*
      rm -rf /var/tmp/*
      journalctl --vacuum-time=3d
      yum clean all
      package-cleanup --oldkernels --count=1
      echo "Cleanup completed on $(date)" >> /var/log/cleanup.log
      
    • 通过Cron调用脚本(如每天凌晨2点执行):0 2 * * * /usr/local/bin/cleanup.sh

四、注意事项

  1. 测试脚本:正式执行前,先在测试环境运行脚本(如注释掉rm命令,仅查看输出),确认不会误删重要文件。
  2. 权限控制:清理系统目录(如/var/etc)需使用root权限,建议通过sudo或root用户执行。
  3. 定期审查:每季度审查清理计划(如调整日志保留天数、清理频率),适应系统变化(如新增软件导致的缓存增加)。
  4. 避免过度清理:不要删除系统必需的文件(如/boot目录下的内核文件、/etc目录下的配置文件),防止系统无法启动。

0
看了该问题的人还看了