自动清理脚本,适合离线服务器。功能包括:
-
清理 systemd 日志(保留最近 7 天)
-
清理
/tmp目录 3 天以上的文件 -
清理
/root/logs和/root/nacos/logs7 天以上文件或大文件 -
删除 core dump 文件
-
输出执行日志
#!/bin/bash
# auto_clean_no_find.sh
# 自动清理脚本(无需 find)
# 适用于完全离线的 CentOS/RHEL 系统
# 日志目录
LOG_DIR="/root/logs"
NACOS_LOG="/root/nacos/logs"
TMP_DIR="/tmp"
MIN_FREE_PERCENT=10
DAYS_LOG=7 # 日志保留天数
DAYS_TMP=3 # /tmp 保留天数
SIZE_LIMIT=$((100*1024*1024)) # 大文件删除阈值,100MB
# 设置 PATH,避免 cron 环境缺少命令
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
echo "==== [$(date '+%F %T')] 自动清理任务开始 ===="
# ----------------------------
# 1️⃣ 清理 systemd 日志
journalctl --vacuum-time=7d
# ----------------------------
# 2️⃣ 清理 /tmp 超过 DAYS_TMP 天的文件
now=$(date +%s)
for file in "$TMP_DIR"/*; do
if [ -f "$file" ]; then
filetime=$(stat -c %Y "$file")
if [ $((now - filetime)) -gt $((DAYS_TMP*86400)) ]; then
rm -f "$file" 2>/dev/null
echo "删除 /tmp 文件: $file"
fi
fi
done
# ----------------------------
# 3️⃣ 清理 /root/logs 超过 DAYS_LOG 天的文件或大文件
for file in "$LOG_DIR"/*; do
if [ -f "$file" ]; then
filetime=$(stat -c %Y "$file")
filesize=$(stat -c %s "$file")
if [ $((now - filetime)) -gt $((DAYS_LOG*86400)) ] || [ "$filesize" -gt "$SIZE_LIMIT" ]; then
rm -f "$file" 2>/dev/null
echo "删除日志文件: $file"
fi
fi
done
# ----------------------------
# 4️⃣ 清理 /root/nacos/logs 超过 DAYS_LOG 天的文件或大文件
for file in "$NACOS_LOG"/*; do
if [ -f "$file" ]; then
filetime=$(stat -c %Y "$file")
filesize=$(stat -c %s "$file")
if [ $((now - filetime)) -gt $((DAYS_LOG*86400)) ] || [ "$filesize" -gt "$SIZE_LIMIT" ]; then
rm -f "$file" 2>/dev/null
echo "删除 Nacos 日志文件: $file"
fi
fi
done
# ----------------------------
# 5️⃣ 删除 core dump 文件
rm -f /var/lib/systemd/coredump/* 2>/dev/null
# ----------------------------
# 6️⃣ 输出磁盘使用情况
echo "==== 清理完成,当前磁盘占用: ===="
df -h | grep '/$'
echo "========================================"
✅ 使用方法
-
保存脚本:
vim /usr/local/bin/auto_clean_no_find.sh
-
赋予执行权限:
chmod +x /usr/local/bin/auto_clean_no_find.sh
-
测试运行:
bash /usr/local/bin/auto_clean_no_find.sh
-
添加 cron 定时任务(每天凌晨 3 点执行):
crontab -e
添加:
0 3 * * * /usr/local/bin/auto_clean_no_find.sh >> /var/log/auto_clean.log 2>&1
💡 特点:
-
完全不依赖
find,适合离线服务器 -
自动删除旧日志、大文件和临时文件
-
输出详细清理信息,方便排查
-
可直接用于 cron 定时任务

被折叠的 条评论
为什么被折叠?



