#!/bin/bash
# 本脚本AI生成
# 确保脚本以 root 权限运行
if [[ $EUID -ne 0 ]]; then
   echo "此脚本必须以 root 权限运行"
   exit 1
fi

start_space=$(df / | tail -n 1 | awk '{print $3}')

# CentOS 使用 yum 包管理器
PKG_MANAGER="yum"
CLEAN_CMD="yum clean all"
PKG_UPDATE_CMD="yum check-update"
INSTALL_CMD="yum install -y"
PURGE_CMD="yum remove -y"

# 更新包列表
echo "正在更新包列表..."
$PKG_UPDATE_CMD > /dev/null 2>&1

# 安全删除旧内核
echo "正在删除未使用的内核..."
current_kernel=$(uname -r)
kernel_packages=$(rpm -qa | grep kernel | grep -v $current_kernel | grep -v kernel-headers)
if [ ! -z "$kernel_packages" ]; then
    echo "找到旧内核，正在删除：$kernel_packages"
    $PURGE_CMD $kernel_packages > /dev/null 2>&1
    grub2-mkconfig -o /boot/grub2/grub.cfg > /dev/null 2>&1
else
    echo "没有旧内核需要删除。"
fi

# 清理系统日志文件
echo "正在清理系统日志文件..."
find /var/log -type f -name "*.log" -exec truncate -s 0 {} \; > /dev/null 2>&1
find /root -type f -name "*.log" -exec truncate -s 0 {} \; > /dev/null 2>&1
find /home -type f -name "*.log" -exec truncate -s 0 {} \; > /dev/null 2>&1

# 清理缓存目录
echo "正在清理缓存目录..."
find /tmp -type f -mtime +1 -delete
find /var/tmp -type f -mtime +1 -delete
for user in /home/* /root; do
  cache_dir="$user/.cache"
  if [ -d "$cache_dir" ]; then
    rm -rf "$cache_dir"/* > /dev/null 2>&1
  fi
done

# 清理 Docker（如果使用 Docker）
if command -v docker &> /dev/null
then
    echo "正在清理 Docker 镜像、容器和卷..."
    docker system prune -a -f --volumes > /dev/null 2>&1
fi

# 清理包管理器缓存
echo "正在清理包管理器缓存..."
$CLEAN_CMD > /dev/null 2>&1

# 清理旧的 YUM 事务
echo "正在清理旧的 YUM 事务..."
package-cleanup --oldkernels --count=1 > /dev/null 2>&1
yum-complete-transaction --cleanup-only > /dev/null 2>&1

# 清理 journalctl 日志
echo "正在清理 journalctl 日志..."
journalctl --vacuum-time=3d > /dev/null 2>&1

# 清理 /var/cache
echo "正在清理 /var/cache..."
rm -rf /var/cache/yum/* > /dev/null 2>&1

end_space=$(df / | tail -n 1 | awk '{print $3}')
cleared_space=$((start_space - end_space))
echo "系统清理完成，清理了 $((cleared_space / 1024))M 空间！"



