温馨提示×

linux cleanup能自动化吗

小樊
46
2026-10-17 03:03:09
栏目: 智能运维

可以的,Linux 下的 cleanup(清理)完全可以自动化。常见做法从“简单脚本 + 定时任务”到“系统级自动清理工具”都有。下面按从易到难、从手动到自动给你一个清晰地图。


一、最常用:脚本 + cron(最推荐入门)

1. 写一个简单的清理脚本

例如清理日志和临时文件:

#!/bin/bash
# cleanup.sh

# 删除 /tmp 下 7 天未访问的文件
find /tmp -type f -atime +7 -delete

# 清理系统日志
journalctl --vacuum-time=7d

# 清理 apt 缓存(Debian/Ubuntu)
apt-get clean

# 清理 yum 缓存(CentOS/RHEL)
# yum clean all
chmod +x cleanup.sh

2. 用 cron 定时执行

crontab -e

每天凌晨 3 点执行:

0 3 * * * /path/to/cleanup.sh

✅ 优点:灵活、可控
❌ 缺点:需要自己写逻辑


二、系统自带自动化清理工具

1. systemd-tmpfiles(现代 Linux 推荐)

很多发行版已经自动在用。

配置文件:

/etc/tmpfiles.d/

示例(清理 /tmp 中 10 天前的文件):

# /etc/tmpfiles.d/cleanup.conf
d /tmp 1777 root root 10d

手动测试:

systemd-tmpfiles --clean

✅ 系统级、安全
✅ 很多服务已在用


2. logrotate(专清日志)

自动轮转 + 压缩 + 删除旧日志。

配置文件:

/etc/logrotate.conf
/etc/logrotate.d/

示例:

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

✅ 日志清理标准方案


三、包管理器自带自动清理

Debian / Ubuntu

apt-get autoremove
apt-get autoclean

可加入 cron:

0 4 * * 0 apt-get autoremove -y

CentOS / RHEL

yum autoremove

四、Docker / 容器环境自动化清理

如果你是 Docker 用户:

docker system prune -af

定时任务:

0 2 * * * docker system prune -af

五、进阶:自动化运维工具

  • Ansible:批量 cleanup
  • systemd timer:比 cron 更现代
  • 监控 + 自动触发(磁盘 >90% 自动清理)

六、推荐组合(实用方案)

✅ 普通服务器:

  • logrotate + systemd-tmpfiles + 每周 cron 脚本

✅ 生产服务器:

  • 不自动删业务数据
  • 只自动清日志 / 临时文件 / 缓存

如果你愿意,可以告诉我:

  • 你用的是 哪个 Linux 发行版
  • 想清理的是 日志 / 磁盘 / Docker / 用户文件

我可以直接帮你写一套可落地的自动化 cleanup 方案。

0 踩