
#!/bin/sh
# 自动检测最大可用分区（排除只读分区）
MAX_PARTITION=$(df -h | awk 'NR>1 && $6 !~ /^\/(dev|proc|sys|tmp)/ {print $6,$2}' | sort -k2 -rh | head -1 | awk '{print $1}')
[ -z "$MAX_PARTITION" ] && MAX_PARTITION="/overlay"
SWAP_FILE="${MAX_PARTITION}/swapfile"

# 创建交换文件（1GB）
echo "在${MAX_PARTITION}创建1GB交换文件..."
dd if=/dev/zero of="$SWAP_FILE" bs=1M count=1024 2>/dev/null
[ $? -ne 0 ] && { echo "创建失败：磁盘空间不足或权限问题"; exit 1; }

# 设置交换分区
chmod 600 "$SWAP_FILE"
mkswap "$SWAP_FILE" || { echo "格式化失败"; rm -f "$SWAP_FILE"; exit 1; }

# 持久化配置
sed -i '/swapfile/d' /etc/fstab
echo "$SWAP_FILE none swap sw 0 0" >> /etc/fstab
swapon "$SWAP_FILE" || { echo "激活失败"; exit 1; }

# 验证结果
echo -e "\n交换空间状态："
free -h
echo -e "\n持久化配置已写入/etc/fstab"
