首页/发现新知
视界 · 深度阅读

centos cleanup可以自动化吗

可以的,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 几?服务器是 生产还是测试?

读到这里,发现更多一点。探索更多内容 ↗