一键【创建swap】和【删除swap】。
脚本内容:swap_manager.sh
#!/bin/bash
# VPS Swap 管理工具 (适用于 Debian 11)
# 功能:创建 / 删除 swap,固化配置
SWAPFILE="/swapfile"
SWAPSIZE="1G"
create_swap() {
if swapon --show | grep -q "$SWAPFILE"; then
echo ">>> Swap 已存在,无需重复创建。"
return
fi
echo "=== 创建 $SWAPSIZE swap 文件 ==="
sudo fallocate -l $SWAPSIZE $SWAPFILE || sudo dd if=/dev/zero of=$SWAPFILE bs=1M count=1024 status=progress
echo "=== 设置权限 ==="
sudo chmod 600 $SWAPFILE
echo "=== 格式化为 swap 区 ==="
sudo mkswap $SWAPFILE
echo "=== 启用 swap ==="
sudo swapon $SWAPFILE
echo "=== 添加到 /etc/fstab (固化配置) ==="
grep -q "$SWAPFILE" /etc/fstab || echo "$SWAPFILE none swap sw 0 0" | sudo tee -a /etc/fstab
echo "=== 设置 vm.swappiness = 10 ==="
sudo sysctl vm.swappiness=10
grep -q "vm.swappiness" /etc/sysctl.conf || echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
echo ">>> Swap 创建成功"
}
delete_swap() {
if ! swapon --show | grep -q "$SWAPFILE"; then
echo ">>> Swap 未启用或不存在,无需删除。"
else
echo "=== 关闭 swap ==="
sudo swapoff $SWAPFILE
fi
if [ -f "$SWAPFILE" ]; then
echo "=== 删除 swap 文件 ==="
sudo rm -f $SWAPFILE
fi
echo "=== 从 /etc/fstab 移除 swap 条目 ==="
sudo sed -i "\|$SWAPFILE|d" /etc/fstab
echo ">>> Swap 删除完成"
}
show_status() {
echo "=== 当前 swap 状态 ==="
free -h
swapon --show
}
menu() {
clear
echo "============================"
echo " VPS Swap 管理工具"
echo "============================"
echo " 1. 创建 1GB Swap"
echo " 2. 删除 Swap"
echo " 3. 查看 Swap 状态"
echo " 0. 退出"
echo "============================"
read -p "请输入选项 [0-3]: " choice
case "$choice" in
1) create_swap ;;
2) delete_swap ;;
3) show_status ;;
0) exit 0 ;;
*) echo "无效选项,请重新输入。" ;;
esac
}
# 主循环
while true; do
menu
echo
read -p "按回车键返回菜单..." dummy
done
使用方法
- 保存脚本
nano swap_manager.sh
# 粘贴脚本内容
- 赋予执行权限
chmod +x swap_manager.sh
- 运行脚本
./swap_manager.sh
脚本功能一览
选项 | 说明 |
---|---|
1 | 创建 1GB Swap 并固化 |
2 | 删除 Swap 并清理配置 |
3 | 查看当前 Swap 状态 |
0 | 退出工具 |
稳健性说明
- 会检查 swap 是否已存在,避免重复创建
- 删除时自动关闭 swap、清理文件和
fstab
- 防止重复写入
fstab
/sysctl.conf
- 支持多次反复操作,不会报错