#!/bin/bash
# 通用 Linux 系统清理脚本（不保存日志文件，仅终端显示）

echo "============================"
echo "🧹 开始清理 Linux 系统垃圾"
echo "============================"

# 必须是 root
if [ "$EUID" -ne 0 ]; then
    echo "❌ 请使用 root 用户运行此脚本"
    exit 1
fi

# 检测系统
if [ -f /etc/os-release ]; then
    . /etc/os-release
    DISTRO=$ID
else
    echo "❌ 无法检测发行版"
    exit 1
fi

echo "👉 当前系统: $DISTRO"

clean_common() {
    echo "→ 清理 /tmp ..."
    find /tmp -type f -exec echo "删除: {}" \; -exec rm -f {} \;

    echo "→ 清理 /var/tmp ..."
    find /var/tmp -type f -exec echo "删除: {}" \; -exec rm -f {} \;

    echo "→ 截断 /var/log 中 >10MB 的日志 ..."
    find /var/log -type f -name "*.log" -size +10M -exec echo "截断: {}" \; -exec truncate -s 0 {} \;

    echo "→ 截断 /root 中 >1MB 的日志 ..."
    find /root -type f -name "*.log" -size +1M -exec echo "截断: {}" \; -exec truncate -s 0 {} \;

    echo "→ 清理 systemd journal（保留 1 天）..."
    journalctl --vacuum-time=1d
}

case "$DISTRO" in
    debian|ubuntu)
        echo "→ 清理 apt 缓存..."
        apt autoremove -y
        apt autoclean -y
        apt clean
        clean_common
        ;;
    centos|rhel|rocky|almalinux)
        echo "→ 清理 yum/dnf 缓存..."
        if command -v dnf &>/dev/null; then
            dnf autoremove -y
            dnf clean all
        else
            yum autoremove -y
            yum clean all
        fi
        clean_common
        ;;
    arch)
        echo "→ 清理 pacman 缓存..."
        pacman -Rns $(pacman -Qtdq 2>/dev/null) 2>/dev/null
        pacman -Sc --noconfirm
        clean_common
        ;;
    *)
        echo "⚠️ 不支持的发行版，仅执行通用清理"
        clean_common
        ;;
esac

echo "✅ 清理完成，磁盘使用情况如下："
df -h
