Skip to content

Instantly share code, notes, and snippets.

@discountry
Created April 9, 2026 04:22
Show Gist options
  • Select an option

  • Save discountry/207c8cd21c0a1523709a20ab87726249 to your computer and use it in GitHub Desktop.

Select an option

Save discountry/207c8cd21c0a1523709a20ab87726249 to your computer and use it in GitHub Desktop.
#!/bin/bash
# 确保脚本以 root 权限运行
if [ "$EUID" -ne 0 ]; then
echo "请使用 sudo 权限运行此脚本。命令: sudo bash $0"
exit 1
fi
SWAP_FILE="/swapfile"
SWAP_SIZE="2G"
echo "开始配置 $SWAP_SIZE 的虚拟内存 (Swap)..."
# 1. 检查是否已存在 swapfile
if [ -f "$SWAP_FILE" ]; then
echo "错误:$SWAP_FILE 已经存在,为防止覆盖数据,脚本已停止。"
exit 1
fi
# 2. 创建交换文件 (优先使用 fallocate 以提升速度,若不支持则降级使用 dd)
echo "正在分配磁盘空间..."
if fallocate -l $SWAP_SIZE $SWAP_FILE 2>/dev/null; then
echo "空间分配成功。"
else
echo "fallocate 不受支持,正在使用 dd 分配空间 (这可能需要十几秒时间)..."
dd if=/dev/zero of=$SWAP_FILE bs=1M count=2048 status=progress
fi
# 3. 修改文件权限 (出于安全考虑,只有 root 可以读写该文件)
echo "设置文件权限..."
chmod 600 $SWAP_FILE
# 4. 将文件格式化为 swap 空间
echo "格式化交换文件..."
mkswap $SWAP_FILE
# 5. 启用该 swap 空间
echo "启用虚拟内存..."
swapon $SWAP_FILE
# 6. 配置开机自动挂载
echo "正在写入 /etc/fstab 以实现开机自启..."
if ! grep -q "$SWAP_FILE" /etc/fstab; then
echo "$SWAP_FILE none swap sw 0 0" >> /etc/fstab
echo "开机自启配置完成。"
else
echo "警告:/etc/fstab 中已存在相关配置,跳过写入。"
fi
echo "======================"
echo "配置完成!当前的内存状态如下:"
free -h
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment