如何定制centos系统的清理策略
导读:定制 CentOS 清理策略 一 目标与总体思路 明确清理目标:释放磁盘空间、降低日志膨胀风险、移除无用依赖与旧内核、规范临时文件生命周期。 采用“自动为主、手动为辅”的机制:用 logrotate 做日志轮转,用 cron 定时执行清理...
定制 CentOS 清理策略
一 目标与总体思路
- 明确清理目标:释放磁盘空间、降低日志膨胀风险、移除无用依赖与旧内核、规范临时文件生命周期。
- 采用“自动为主、手动为辅”的机制:用 logrotate 做日志轮转,用 cron 定时执行清理脚本,关键操作前先备份与灰度验证。
- 建立可观测性:用 df -h、du -sh 或 ncdu 定期巡检,必要时设置告警阈值,避免“磁盘打满”导致业务异常。
二 清理范围与推荐做法
- 包管理与缓存
- 清理 YUM/DNF 缓存:yum clean all(或 dnf clean all)。
- 移除无用依赖:yum autoremove。
- 删除旧内核(仅保留最新 N 个):package-cleanup --oldkernels --count=2;如提示命令不存在,安装 yum-utils。
- 临时文件
- 清理系统临时目录:/tmp/*、/var/tmp/;建议先确保无业务占用再清理,避免正在使用的临时文件被误删。
- 日志文件
- 优先使用 logrotate 做按大小/时间的轮转与压缩,避免直接粗暴删除正在写入的日志。
- 如确需快速回收空间,可对已轮转的旧日志做清理;对当前日志如需“清空内容”可用 truncate -s 0 ,谨慎操作。
- 大文件巡检
- 定位大文件/目录:ncdu / 或 du -sh /var;按需归档或删除无用大文件(先确认业务无关)。
- 可选工具
- 桌面环境可用 baobab 做磁盘占用可视化分析;服务器环境建议以 ncdu/du 为主。
三 自动化与定时执行
- 编写清理脚本(示例)
- 建议将脚本放到 /usr/local/sbin/cleanup.sh,并做好备份与权限控制。
- 示例脚本(按实际需求启用/注释条目):
#!/bin/bash set -e # 0) 安全阈值 THRESHOLD=90 USAGE=$(df / | awk 'NR==2 { gsub("%",""); print $5} ') if [ "$USAGE" -lt "$THRESHOLD" ]; then echo "磁盘使用率 ${ USAGE} % < ${ THRESHOLD} %,跳过清理" exit 0 fi # 1) 包管理 yum clean all || true yum autoremove -y || true if command -v package-cleanup > /dev/null 2> & 1; then package-cleanup --oldkernels --count=2 -y || true fi # 2) 临时文件(谨慎:确保无业务占用) rm -rf /tmp/* /var/tmp/* 2> /dev/null || true # 3) 日志:优先用 logrotate;如确需清理已轮转的旧日志 find /var/log -type f -name "*.gz" -mtime +30 -delete 2> /dev/null || true find /var/log -type f -name "*.log" -mtime +30 -delete 2> /dev/null || true # 4) 大文件巡检(仅输出,不删除) echo "Top 10 largest dirs in /var:" du -xh /var 2> /dev/null | sort -rh | head -n 10 # 5) 可选:清理内存页缓存(仅在必要时使用,生产慎用) # sync # echo 3 > /proc/sys/vm/drop_caches
- 配置定时任务
- 确保 crond 运行:systemctl start crond & & systemctl enable crond。
- 编辑计划任务:crontab -e,示例(每天 02:00 执行,输出到日志):
0 2 * * * /usr/local/sbin/cleanup.sh > > /var/log/cleanup.log 2> & 1 - 如需清理页面缓存,建议单独脚本、低峰时段执行,并加“使用率阈值”与“sync”保护。
四 日志与临时文件的策略模板
- 日志轮转模板(/etc/logrotate.d/myapp)
- 建议按“大小或时间”触发,启用压缩与保留份数,避免无限增长。
- 示例:
/var/log/myapp/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 root root postrotate /usr/bin/systemctl reload myapp.service > /dev/null 2> & 1 || true endscript }
- 临时文件生命周期
- 系统层面建议启用 systemd-tmpfiles 清理策略(/usr/lib/tmpfiles.d/.conf 或 /etc/tmpfiles.d/.conf),对 /tmp、/run、/var/tmp 按 age 自动清理,减少手工删除风险。
五 安全与运维建议
- 变更前备份关键配置与数据;清理操作遵循“先巡检、后清理、再验证”的顺序。
- 生产环境谨慎使用 drop_caches,仅在确有内存压力且低峰时段执行,并先 sync。
- 对数据库、消息队列、容器/镜像等场景,清理前确认数据生命周期与依赖,避免误删导致业务中断。
- 建议将 df/du/ncdu 巡检与清理日志纳入日常值班,设置磁盘使用率告警(如超过 80% 预警、90% 紧急)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何定制centos系统的清理策略
本文地址: https://pptw.com/jishu/761451.html
