---
title: Linux Swap 管理脚本
description: Linux Swap 管理脚本可帮助你轻松创建、启用、禁用和删除 Swap 文件…
url: "https://brimflow.xyz/docs/operations/linux-swap-script/"
updated: "2025-06-09"
category: 运维
---

# Linux Swap 管理脚本

Linux Swap 管理脚本可帮助你轻松创建、启用、禁用和删除 Swap 文件。

## 脚本功能概览

- 创建并启用 swap 文件（默认 2G，支持指定大小）
- 自动写入 `/etc/fstab`，重启后仍有效
- 可检测已有 swap，避免重复创建
- 支持禁用并删除 swap 文件
- 使用参数控制行为（`on` 或 `off`）

## 查看 Swap 状态

可以使用以下命令查看 swap 使用情况：

 Bash

```
free -h
sudo swapon --show
```

- `free -h` 会显示总内存和 swap 的使用量
- `swapon --show` 会列出所有启用的 swap 设备或文件。

## 使用方法

 Bash

```
sudo bash manage-swap.sh [on|off] [大小]
```

- `on`（默认） → 创建并启用 swap 文件（如未指定大小，则为 2G）
- `off` → 禁用并删除 swap 文件

示例

 Bash

```
sudo bash manage-swap.sh         # 创建默认 2GB swap
sudo bash manage-swap.sh on 1G   # 创建 1GB swap 文件
sudo bash manage-swap.sh off     # 删除 swap
```

## 脚本代码

你可以将以下脚本保存为 `manage-swap.sh` 文件，并使用 `sudo bash manage-swap.sh` 来运行它：

 Bash

```
#!/bin/bash

ACTION=${1:-on}
SWAP_SIZE=${2:-2G}
SWAP_FILE="/swapfile"

enable_swap() {
    if swapon --show | grep -q "$SWAP_FILE"; then
        echo "Swap 文件 $SWAP_FILE 已启用，跳过操作。"
        exit 0
    fi

    if swapon --show | grep -q "^"; then
        echo "系统已启用其他 swap，跳过创建。"
        exit 0
    fi

    if [ -f "$SWAP_FILE" ]; then
        echo "Swap 文件已存在但未启用，正在启用..."
        chmod 600 "$SWAP_FILE"
        mkswap "$SWAP_FILE"
        swapon "$SWAP_FILE"
        grep -q "$SWAP_FILE" /etc/fstab || echo "$SWAP_FILE none swap sw 0 0" | tee -a /etc/fstab
        echo "Swap 文件启用成功。"
        exit 0
    fi

    echo "创建 ${SWAP_SIZE} 的 swap 文件..."
    fallocate -l "$SWAP_SIZE" "$SWAP_FILE"
    chmod 600 "$SWAP_FILE"
    mkswap "$SWAP_FILE"
    swapon "$SWAP_FILE"
    echo "$SWAP_FILE none swap sw 0 0" | tee -a /etc/fstab
    echo "Swap 文件创建并启用成功。"
}

disable_swap() {
    if swapon --show | grep -q "$SWAP_FILE"; then
        echo "正在禁用 swap..."
        swapoff "$SWAP_FILE"
    else
        echo "Swap 文件未启用，跳过 swapoff。"
    fi

    if grep -q "$SWAP_FILE" /etc/fstab; then
        echo "从 /etc/fstab 中移除 swap 配置..."
        sed -i "\|$SWAP_FILE|d" /etc/fstab
    fi

    if [ -f "$SWAP_FILE" ]; then
        echo "删除 swap 文件..."
        rm -f "$SWAP_FILE"
    fi

    echo "Swap 文件已禁用并删除。"
}

if [ "$ACTION" = "on" ]; then
    enable_swap
elif [ "$ACTION" = "off" ]; then
    disable_swap
else
    echo "无效参数：$ACTION"
    echo "用法: sudo bash $0 [on|off] [大小]"
    exit 1
fi
```

## 注意事项

- 请使用 `sudo` 权限执行脚本，否则创建或挂载将失败。
- 本脚本适用于大多数现代 Linux 发行版（如 Ubuntu、Debian、CentOS）。
- 如果你的系统已有挂载的 swap 分区，请谨慎使用。
- 建议通过 `swapon --show` 和 `free -h` 检查当前 swap 状态。

## 使用建议

Swap 文件并非越大越好，设置前可参考以下建议：

- **内存小于 2GB 的服务器**：建议设置 1～2GB 的 swap，用于缓解临时性内存压力。
- **内存 2～4GB 的服务器**：如无特殊需求，可设置 1G 左右，避免频繁交换影响性能。
- **内存超过 8GB 的服务器**：除非存在大编译、内存峰值或休眠等场景，可考虑不启用 swap，或设置较小值（如 512M）以提供安全缓冲。

 [Arch Linux Wiki: Swap](https://wiki.archlinux.org/title/Swap)；[Ubuntu: Swap FAQ](https://help.ubuntu.com/community/SwapFaq)
