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

posted @ 2025-10-21 19:27  昆仑葫芦  阅读(1)  评论(0)    收藏  举报