可以的,CentOS 的 cleanup(清理)完全可以自动化。常见做法有 shell 脚本 + cron、systemd timer,也可以结合监控/日志工具。下面按“能自动做什么 → 怎么做 → 示例”来说明。
一、CentOS 上通常可以自动化清理的内容
1. 系统包缓存
yum clean all
# CentOS 8+/Stream 也可用
dnf clean all
2. 旧内核(非常重要)
CentOS 默认会保留多个内核,时间久了 /boot 可能满。
package-cleanup --oldkernels --count=2
3. 日志文件(/var/log)
journalctl --vacuum-size=500M- 删除旧
.log、.gz
4. 临时文件
rm -rf /tmp/*
rm -rf /var/tmp/*
5. 用户/应用日志或缓存
如:
- Docker:
docker system prune -f - Nginx/Java 日志
- 应用临时目录
二、自动化方式一:Shell 脚本 + cron(最常用)
1. 编写清理脚本
/usr/local/bin/centos-cleanup.sh
#!/bin/bash
# CentOS 自动清理脚本
# 清理 yum/dnf 缓存
yum clean all >/dev/null 2>&1
# 保留最近2个内核
package-cleanup --oldkernels --count=2 -y >/dev/null 2>&1
# 清理 journal 日志
journalctl --vacuum-size=500M >/dev/null 2>&1
# 清理临时文件
rm -rf /tmp/* /var/tmp/*
# 清理 30 天前的日志
find /var/log -type f -name "*.log" -mtime +30 -delete
赋权:
chmod +x /usr/local/bin/centos-cleanup.sh
2. 加入 cron(例如每周日 3 点)
crontab -e
0 3 * * 0 /usr/local/bin/centos-cleanup.sh
三、自动化方式二:systemd timer(更现代)
1. Service
/etc/systemd/system/centos-cleanup.service
[Unit]
Description=CentOS Cleanup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/centos-cleanup.sh
2. Timer
/etc/systemd/system/centos-cleanup.timer
[Unit]
Description=Run CentOS cleanup weekly
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.target
systemctl enable --now centos-cleanup.timer
四、进阶自动化(可选)
- 监控触发:磁盘 > 80% 自动清理
- Ansible:批量清理多台 CentOS
- logrotate:日志自动轮转+清理(推荐配置)
- 监控告警:Prometheus + Node Exporter
五、注意事项(很重要)
⚠️ 不要盲目 rm -rf
⚠️ 内核至少保留 1–2 个
⚠️ 生产环境先在测试机验证
⚠️ 日志删除前确认无合规要求
如果你愿意,我可以:
- 给你一份生产级 CentOS 清理脚本
- 按 CentOS 7 / 8 / Stream 分别写
- 或做成 一键安装 + 定时任务
你现在是 CentOS 几?服务器是 生产还是测试?