温馨提示×

怎样定制centos清理计划

小樊
45
2025-10-26 02:41:57
栏目: 智能运维

一、清理前的准备工作

  1. 备份重要数据:执行清理操作前,务必备份系统关键数据(如/etc/home、数据库文件等),避免误删导致数据丢失。
  2. 检查磁盘空间:使用df -h查看磁盘使用率,du -sh /*分析各目录占用情况,确定清理优先级(如/var/tmp等大目录)。

二、常见清理任务清单

1. 清理临时文件

  • /tmp目录:存储会话级临时文件,可每日清空(重启后自动重建):
    rm -rf /tmp/*
  • /var/tmp目录:存储长期临时文件(默认保留7天),可每周清理超过7天的文件:
    find /var/tmp -type f -atime +7 -delete

2. 清理日志文件

  • 手动清理:使用find命令删除旧日志(如7天前的.log文件):
    find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
  • 自动轮转:通过logrotate工具配置日志轮转(编辑/etc/logrotate.conf或创建自定义配置,如/etc/logrotate.d/myapp):
    /var/log/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 root adm
    }
    
    该配置表示日志每日轮转,保留7个压缩归档,空日志不处理。

3. 清理包管理器缓存

  • CentOS 7及以下(yum):清理软件包缓存及元数据:
    yum clean all && yum clean metadata
  • CentOS 8及以上(dnf):同理执行:
    dnf clean all && dnf clean metadata
    缓存清理可释放/var/cache/yum/var/cache/dnf目录空间。

4. 删除无用软件包

  • 自动卸载依赖:清理不再被任何软件包依赖的“孤立包”:
    yum autoremove(CentOS 7)或dnf autoremove(CentOS 8)
  • 手动卸载:通过yum list installeddnf list installed查看已安装软件,卸载不需要的包(如yum remove firefox)。

5. 清理系统缓存

  • 页面缓存:清理页面缓存、目录项缓存和inode缓存(不影响正在运行的程序):
    sync && echo 3 > /proc/sys/vm/drop_caches
    注:sync命令将缓存数据写入磁盘,避免数据丢失。

6. 删除旧内核

  • 保留最新内核:使用package-cleanup工具删除旧内核(仅保留1个最新内核):
    package-cleanup --oldkernels --count=1
    旧内核占用/boot分区空间,过多会导致无法升级内核。

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 {} \;
    替换/path/to/search为目标目录(如/home/var)。

三、自动化清理计划配置

1. 使用cron定时任务

  • 编辑crontab:使用sudo crontab -e添加定时任务(以下为示例):
    # 每天凌晨2点清理/tmp
    0 2 * * * rm -rf /tmp/*
    # 每周日2点清理/var/tmp超过7天的文件
    0 2 * * 0 find /var/tmp -type f -atime +7 -delete
    # 每天3点清理日志(调用logrotate)
    0 3 * * * logrotate -f /etc/logrotate.conf
    # 每周一3点清理包缓存
    0 3 * * 1 yum clean all && dnf clean all
    # 每月1号4点清理旧内核
    0 4 1 * * package-cleanup --oldkernels --count=1
    
    日志会输出到/var/log/cron,可通过tail -f /var/log/cron查看执行情况。

2. 使用systemd定时器(CentOS 7+)

  • 创建服务单元/etc/systemd/system/cleanup.service):
    [Unit]
    Description=CentOS System Cleanup Service
    [Service]
    Type=oneshot
    ExecStart=/bin/bash -c "rm -rf /tmp/* && find /var/tmp -type f -atime +7 -delete && yum clean all && dnf clean all && package-cleanup --oldkernels --count=1"
    
  • 创建定时器单元/etc/systemd/system/cleanup.timer):
    [Unit]
    Description=Run cleanup daily at 2 AM
    [Timer]
    OnCalendar=*-*-* 02:00:00
    Persistent=true
    [Install]
    WantedBy=timers.target
    
  • 启用并启动
    sudo systemctl enable cleanup.timer && sudo systemctl start cleanup.timer
    通过systemctl list-timers查看定时器状态。

四、注意事项

  1. 测试脚本:正式执行前,先手动运行清理命令(如rm -rf /tmp/*),确认不会误删重要文件。
  2. 监控磁盘空间:清理后仍需定期检查磁盘使用情况(如df -h),避免新文件占满空间。
  3. 调整清理频率:根据系统使用情况调整定时任务频率(如日志轮转可改为weekly,大文件清理可改为每月一次)。
  4. 工具辅助:可使用bleachbitsudo yum install bleachbit)图形化清理系统垃圾,适合不熟悉命令的用户。

0