不能。swapoff -a 仅临时禁用所有 swap,重启后会因 /etc/fstab 中未注释的 swap 条目而自动恢复;永久关闭需编辑 /etc/fstab 注释掉 swap 行并重启。

swapoff -a 能否直接永久关闭 Swap?
不能。swapoff -a 只是临时禁用,重启后所有在 /etc/fstab 中配置的 Swap 会自动重新挂载。它不修改任何配置文件,也不影响系统启动行为。如果你只执行这一步就以为“关完了”,下次 reboot 后 free -h 里 Swap 行还会回来。
如何永久禁用 Swap(不删分区)
核心动作是让系统启动时跳过 Swap 挂载。关键在 /etc/fstab:
- 先备份:
sudo cp /etc/fstab /etc/fstab.bak - 编辑:
sudo vim /etc/fstab - 找到含
swap的行,例如:/dev/sdb1 none swap sw 0 0或/swapfile none swap sw 0 0 - 在整行最前面加
#注释掉,保存退出 - 验证是否生效:
grep swap /etc/fstab应无非注释输出
注意:systemctl daemon-reexec 并不能使 /etc/fstab 修改立即生效——fstab 是由 init 进程在启动阶段读取的,唯一可靠方式是重启,或手动 swapoff -a 再确认。
如何彻底删除 Swap 文件(/swapfile)
适用于用文件方式实现 Swap 的场景(常见于云服务器):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 先确保已关闭:
sudo swapoff /swapfile(或sudo swapoff -a) - 删文件:
sudo rm /swapfile - 检查
/etc/fstab是否还有该路径的配置,有则一并注释 - (可选)覆盖擦除敏感数据:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 && sudo sync,再rm
删完后 swapon --show 应无输出,free -h 的 Swap 行 total 显示 0B。
如何删除 Swap 分区(如 /dev/sdb1)
这是真正释放磁盘空间的操作,风险高,务必确认分区无其他用途:
- 先关闭:
sudo swapoff /dev/sdb1 - 确认未被使用:
lsblk和swapon --show都不应出现该设备 - 用
sudo fdisk /dev/sdb(替换为对应磁盘)进入交互模式 - 输入
d删除分区 → 输入分区号(如1)→ 输入w写入变更 - 执行
sudo partprobe刷新内核分区表 - 最后检查:
cat /proc/swaps应为空,ls /dev/sdb*不再显示sdb1
删除分区后,原空间变成未分配状态,需用 fdisk 或 parted 创建新分区并格式化才能复用——这步容易误操作导致数据丢失,除非明确要回收空间,否则仅注释 fstab 更安全。










