create_2g_swap.sh
!/bin/bash
创建 2GB 交换文件的脚本
作者: Assistant
日期: 2025-10-21
SWAP_FILE="/swapfile"
SWAP_SIZE="2G"
检查是否为 root 用户
if [ "$(id -u)" -ne 0 ]; then
echo "错误: 该脚本必须以 root 权限运行!"
exit 1
fi
检查是否已存在交换文件
if swapon --show | grep -q "$SWAP_FILE"; then
echo "警告: $SWAP_FILE 已作为交换文件启用。"
read -p "是否继续覆盖?(y/N): " -n 1 -r
echo
if [[ ! \(REPLY =~ ^[Yy]\) ]]; then
echo "操作已取消。"
exit 0
fi
swapoff "$SWAP_FILE"
fi
如果文件已存在但未启用,删除它
if [ -f "$SWAP_FILE" ]; then
echo "发现已存在的 \(SWAP_FILE,正在删除..."
rm -f "\)SWAP_FILE"
fi
echo "正在创建 \(SWAP_SIZE 的交换文件:\)SWAP_FILE ..."
创建指定大小的文件(使用 fallocate,更快)
if ! fallocate -l "\(SWAP_SIZE" "\)SWAP_FILE"; then
echo "fallocate 失败,尝试使用 dd ..."
dd if=/dev/zero of="$SWAP_FILE" bs=1M count=2048 status=progress
fi
设置正确权限(仅 root 可读写)
chmod 600 "$SWAP_FILE"
设置为交换空间
echo "正在设置交换空间..."
mkswap "$SWAP_FILE"
启用交换文件
echo "正在启用交换文件..."
swapon "$SWAP_FILE"
永久生效:写入 /etc/fstab(避免重复添加)
if ! grep -q "\(SWAP_FILE" /etc/fstab; then
echo "\)SWAP_FILE none swap sw 0 0" >> /etc/fstab
echo "已将交换文件添加到 /etc/fstab,重启后仍生效。"
else
echo "交换文件已存在于 /etc/fstab 中。"
fi
显示当前交换状态
echo "✅ 交换文件创建并启用成功!"
swapon --show
free -h

浙公网安备 33010602011771号