LINUX 定时清理脚本

自动清理脚本,适合离线服务器。功能包括:

  • 清理 systemd 日志(保留最近 7 天)

  • 清理 /tmp 目录 3 天以上的文件

  • 清理 /root/logs/root/nacos/logs 7 天以上文件或大文件

  • 删除 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 "========================================"

✅ 使用方法

  1. 保存脚本:

vim /usr/local/bin/auto_clean_no_find.sh
  1. 赋予执行权限:

chmod +x /usr/local/bin/auto_clean_no_find.sh
  1. 测试运行:

bash /usr/local/bin/auto_clean_no_find.sh
  1. 添加 cron 定时任务(每天凌晨 3 点执行):

crontab -e

添加:

0 3 * * * /usr/local/bin/auto_clean_no_find.sh >> /var/log/auto_clean.log 2>&1

💡 特点:

  • 完全不依赖 find,适合离线服务器

  • 自动删除旧日志、大文件和临时文件

  • 输出详细清理信息,方便排查

  • 可直接用于 cron 定时任务


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值