💡 生动的比喻:
在 Linux 里开启 Swap(虚拟内存),就像是你临时向系统“租”了一间仓库放杂物。
如果你只执行了 swapon(启用命令),这就相当于**“口头租房”,系统一重启(断电),房东就把仓库收回去了。
要想让它永久生效,你必须
“签定正式合同”**——也就是把这笔交易写进 Linux 的 /etc/fstab(开机自动挂载配置文件)里。

来,我们现在就在你这个黑色的 MobaXterm 终端里,彻底且永久地把它搞定。请依次复制下面的命令并回车执行:

第一步:重新创建并激活 Swap(建仓库)

既然重启没了,我们干脆重新建一个干净的。依次执行这 4 行命令:

BASH

# 1. 划出 2GB 的硬盘空间作为 Swap 文件
sudo fallocate -l 2G /swapfile

# 2. 修改权限,防止别人乱看你的内存数据(非常重要)
sudo chmod 600 /swapfile

# 3. 把这个文件格式化成 Swap 专用格式
sudo mkswap /swapfile

# 4. 立即激活它!
sudo swapon /swapfile

第二步:写入开机启动名单(签合同 🌟 最关键一步)

为了防止下次重启又消失,我们需要把它写进 /etc/fstab 文件。
为了防止你重复写入,我给你准备了一个**“智能版”命令**(它会先检查有没有,没有才会加进去):

BASH

grep -q '/swapfile' /etc/fstab || echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

第三步:验证成果(查收)

最后,再敲一次你刚才用过的命令:

BASH

free -h

怎么看结果?
如果你看到 Swap: 那一行的 total 变成了 2.0Gi(或者 2.0G),并且 used 可能是 0B,那就说明大功告成

一键脚本

我们可以把这个脚本命名为 set_swap.sh 。以下是为你写好的标准 Shell 脚本:

#!/bin/bash

# ==============================================================================
# 脚本名称: set_swap.sh
# 描述: Linux Swap 一键创建与永久激活脚本(高颜值彩显版)
# ==============================================================================

# 定义 ANSI 颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color(重置颜色)

# 确保脚本是以 root 权限运行
if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}${BOLD}❌ 错误: 请使用 sudo 运行此脚本!${NC}"
    echo -e "${YELLOW}例如: sudo bash set_swap.sh${NC}"
    exit 1
fi

echo -e "${CYAN}==================================================${NC}"
echo -e "${CYAN}${BOLD}🚀 开始配置 Linux Swap 虚拟内存...${NC}"
echo -e "${CYAN}==================================================${NC}"

# 1. 检查是否已经存在 swapfile 激活,或者 fstab 里已经有记录
if swapon --show | grep -q '/swapfile' || grep -q '/swapfile' /etc/fstab; then
    echo -e "${YELLOW}⚠️ 提示: 检测到系统中似乎已经配置过 /swapfile。${NC}"
    echo -ne "${PURPLE}${BOLD}是否要删除旧的并重新创建?(y/n): ${NC}"
    read choice
    if  "$choice" == "y" ; then
        echo -e "${BLUE}🧹 正在清理旧的 Swap 配置...${NC}"
        swapoff /swapfile 2>/dev/null
        sed -i '\#/swapfile#d' /etc/fstab
        rm -f /swapfile
    else
        echo -e "${RED}🛑 脚本已退出,未做任何修改。${NC}"
        exit 0
    fi
fi

# 2. 划出 2GB 的硬盘空间作为 Swap 文件
echo -e "${BLUE}[1/4] 📦 正在划出 2GB 硬盘空间...${NC}"
if ! fallocate -l 2G /swapfile 2>/dev/null; then
    # 如果系统不支持 fallocate(某些文件系统不支持),则降级使用 dd 命令
    dd if=/dev/zero of=/swapfile bs=1M count=2048
fi

# 3. 修改权限
echo -e "${BLUE}[2/4] 🔒 正在设置安全权限 (600)...${NC}"
chmod 600 /swapfile

# 4. 格式化为 Swap 格式
echo -e "${BLUE}[3/4] 🧹 正在格式化 Swap 文件...${NC}"
mkswap /swapfile >/dev/null

# 5. 立即激活
echo -e "${BLUE}[4/4] ⚡ 正在立即激活 Swap...${NC}"
swapon /swapfile

# 6. 写入开机启动名单
echo -e "${BLUE}[⚙️] 📝 正在将配置写入 /etc/fstab 以确保重启有效...${NC}"
echo '/swapfile none swap sw 0 0' >> /etc/fstab

echo -e "${GREEN}--------------------------------------------------${NC}"
echo -e "${GREEN}${BOLD}🎉 Swap 配置完成!以下是当前的内存状态:${NC}"
echo -e "${GREEN}--------------------------------------------------${NC}"

# 7. 验证成果
free -h

echo -e "${GREEN}==================================================${NC}"
echo -e "${YELLOW}💡 看到上面的 Swap 总量变为 ${BOLD}2.0Gi${NC}${YELLOW},即说明大功告成!${NC}"
echo -e "${GREEN}==================================================${NC}"

一条命令搞定

最优雅、最快的一行运行命令是这样的:

Bash

curl -sSO https://raw.githubusercontent.com/yeerhk/github----/main/set_swap.sh && sudo bash set_swap.sh && rm -f set_swap.sh

🛠️ 在 MobaXterm 里如何使用它?

你只需要依次在终端执行下面这 三步 (可以直接复制粘贴):

# 1. 创建脚本文件并把上面的代码粘进去(会自动打开一个编辑界面,粘贴后按 Ctrl+X,再按 Y,最后回车保存)
nano set_swap.sh

# 2. 赋予脚本执行权限
chmod +x set_swap.sh

# 3. 运行脚本(因为涉及系统配置,必须加 sudo)
sudo ./set_swap.sh

✨ 这个脚本多做了哪些优化?

  1. 防呆设计: 运行时会自动检查你有没有加 sudo ,没加会提醒你,不会报错报得莫名其妙。
  2. 智能覆盖: 如果你反复运行这个脚本,它会检测到并询问你 “是否要删除旧的重新建” ,避免了你的 /etc/fstab 文件被重复写入变成“千层饼”。
  3. 兼容性: 增加了 dd 命令作为备用。万一某些特殊的文件系统不支持 fallocate 命令,脚本也不会报错中断。