温馨提示×

怎么写linux cleanup脚本

小樊
46
2026-10-25 23:28:47
栏目: 智能运维

下面给你一个实用、可复用的 Linux cleanup 脚本思路,从基础版 → 进阶版 → 生产级建议,你可以按需取用。


一、最常见的 cleanup 场景

  • 清理临时文件(/tmp, /var/tmp)
  • 清理日志(/var/log)
  • 清理 Docker 无用资源
  • 删除 N 天前的文件
  • 清理缓存(apt / yum)

二、基础版 cleanup 脚本(新手友好)

#!/bin/bash

echo "开始清理系统..."

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

# 清理日志
find /var/log -type f -name "*.log" -mtime +30 -delete

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

echo "清理完成"

保存为 cleanup.sh,然后:

chmod +x cleanup.sh
./cleanup.sh

三、进阶版(更安全 + 可配置)

1️⃣ 使用变量 + 日志

#!/bin/bash

LOG_DIR="/var/log"
TMP_DIR="/tmp"
DAYS=7
LOG_FILE="/var/log/cleanup.log"

echo "$(date) 开始清理" >> $LOG_FILE

find $TMP_DIR -type f -atime +$DAYS -delete
find $LOG_DIR -type f -name "*.log" -mtime +30 -delete

echo "$(date) 清理完成" >> $LOG_FILE

2️⃣ 防止误删(先打印再删除)

find /tmp -type f -atime +7 -print
# 确认无误后再加 -delete

四、Docker cleanup 脚本(非常常用)

#!/bin/bash

echo "清理 Docker 资源..."

docker system prune -f
docker volume prune -f
docker image prune -af

echo "Docker 清理完成"

⚠️ 注意:会删除未使用的容器、网络、镜像、卷


五、加入 crontab(自动执行)

crontab -e

每天凌晨 2 点执行:

0 2 * * * /path/cleanup.sh

六、生产环境建议(很重要)

✅ 使用 -print 先确认
✅ 不要 rm -rf / 或 rm -rf *
✅ 对重要目录加白名单
✅ 记录日志
✅ 用 sudo 控制权限


七、简单模板(你可以直接改)

#!/bin/bash
set -e

DIRS=("/tmp" "/var/tmp")
DAYS=7

for dir in "${DIRS[@]}"; do
    find "$dir" -type f -atime +$DAYS -delete
done

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

  • 你用的是 Ubuntu / CentOS / Alpine?
  • 是 服务器 / 容器 / 开发机?
  • 想清理 日志 / Docker / 缓存 / 自定义目录?

我可以帮你定制一个专属 cleanup 脚本。

0 踩