news 2026/4/11 23:21:50

【Linux命令大全】008.磁盘维护之swapoff命令(实操篇)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux命令大全】008.磁盘维护之swapoff命令(实操篇)

【Linux命令大全】008.磁盘维护之swapoff命令(实操篇)

✨ 本文为Linux系统磁盘维护命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。

(关注不迷路哈!!!)

文章目录

  • 【Linux命令大全】008.磁盘维护之swapoff命令(实操篇)
    • 一、功能与作用
    • 二、基本用法
      • 1. 禁用指定的交换分区
      • 2. 禁用交换文件
      • 3. 禁用所有交换空间
      • 4. 详细模式禁用交换空间
      • 5. 忽略错误继续操作
      • 6. 查看已禁用的交换空间状态
    • 三、高级用法
      • 1. 根据优先级禁用交换空间
      • 2. 临时禁用交换空间进行系统维护
      • 3. 在脚本中安全地禁用交换空间
      • 4. 调整交换空间大小时禁用交换空间
      • 5. 禁用交换空间以提高性能
      • 6. 仅禁用特定类型的交换空间
    • 四、实用技巧与常见问题
      • 实用技巧
      • 常见问题
    • 五、总结

一、功能与作用

swapoff命令是Linux系统中用于禁用交换空间的工具,它可以关闭指定的交换分区或交换文件,将系统的虚拟内存管理恢复到只使用物理内存的状态。与swapon命令相反,swapoff命令用于停用交换空间,通常在需要卸载交换设备、调整交换空间大小或进行系统维护时使用。

swapoff命令在系统维护、性能优化和资源管理中具有以下重要作用:

  • 临时禁用交换空间进行系统维护
  • 在调整交换空间大小时安全地关闭交换设备
  • 释放被交换空间占用的磁盘资源
  • 在系统备份或迁移过程中确保数据完整性
  • 用于测试系统在没有交换空间时的性能表现

参数详解

参数说明
-a禁用所有已启用的交换空间
-v详细模式,显示操作过程
-e如果遇到错误,继续处理其他交换空间

二、基本用法

1. 禁用指定的交换分区

使用swapoff命令禁用特定的交换分区:

# 禁用交换分区/dev/sdb1sudoswapoff /dev/sdb1# 输出示例(默认无输出,如果操作成功)

2. 禁用交换文件

使用swapoff命令禁用特定的交换文件:

# 禁用交换文件/swapfilesudoswapoff /swapfile

3. 禁用所有交换空间

使用-a参数禁用系统中所有已启用的交换空间:

# 禁用所有交换空间sudoswapoff -a# 验证是否已禁用sudoswapon--show# 如果没有输出,表示所有交换空间已禁用

4. 详细模式禁用交换空间

使用-v参数以详细模式禁用交换空间,显示操作过程:

# 以详细模式禁用交换分区/dev/sdb1sudoswapoff -v /dev/sdb1# 输出示例:# swapoff on /dev/sdb1# 以详细模式禁用所有交换空间sudoswapoff -av# 输出示例:# swapoff on /dev/sdb1# swapoff on /swapfile

5. 忽略错误继续操作

使用-e参数,即使在禁用某个交换空间时遇到错误,也会继续处理其他交换空间:

# 禁用所有交换空间,忽略错误sudoswapoff -ae

6. 查看已禁用的交换空间状态

禁用交换空间后,可以使用swapon --showfree命令验证操作是否成功:

# 查看当前启用的交换空间sudoswapon--show# 查看内存和交换空间使用情况free-h# 输出示例(禁用交换空间后):# total used free shared buff/cache available# Mem: 7.7G 2.1G 3.5G 320M 2.1G 5.1G# Swap: 0B 0B 0B

三、高级用法

1. 根据优先级禁用交换空间

在有多个交换空间的系统中,可以根据优先级选择性地禁用交换空间:

# 查看所有交换空间及其优先级sudoswapon--show# 示例输出:# NAME TYPE SIZE USED PRIO# /dev/sdb1 partition 8G 0B -2# /swapfile file 4G 0B -3# 禁用优先级较低的交换文件sudoswapoff /swapfile# 验证禁用结果sudoswapon--show

2. 临时禁用交换空间进行系统维护

在进行系统维护、备份或硬件更换时,可能需要临时禁用交换空间:

# 步骤1:查看当前交换空间使用情况free-hsudoswapon--show# 步骤2:确认系统有足够的物理内存可用# 如果系统内存不足,禁用交换空间可能导致系统不稳定或进程被终止# 步骤3:禁用交换空间sudoswapoff -a# 步骤4:执行系统维护操作# 例如:更换硬件、调整分区大小、备份数据等# 步骤5:重新启用交换空间sudoswapon-a# 步骤6:验证交换空间已重新启用free-hsudoswapon--show

3. 在脚本中安全地禁用交换空间

以下是一个在脚本中安全禁用交换空间的示例:

#!/bin/bash# 安全禁用交换空间脚本LOG_FILE="/var/log/disable_swap.log"# 记录日志函数log(){echo"[$(date)]$1">>$LOG_FILE}# 检查是否以root权限运行if["$(id-u)"!="0"];thenecho"错误:请以root权限运行此脚本!"exit1filog"开始禁用交换空间..."# 检查当前交换空间使用情况log"当前交换空间使用情况:"swapon--show>>$LOG_FILEfree-h>>$LOG_FILE# 检查可用物理内存是否足够AVAILABLE_MEM=$(free-m|awk'/Mem/ {print $7}')USED_SWAP=$(free-m|awk'/Swap/ {print $3}')log"可用物理内存:${AVAILABLE_MEM}MB"log"已使用交换空间:${USED_SWAP}MB"# 判断是否有足够的可用内存if["$AVAILABLE_MEM"-lt"$USED_SWAP"];thenlog"警告:可用物理内存(${AVAILABLE_MEM}MB)小于已使用的交换空间(${USED_SWAP}MB)!"log"禁用交换空间可能导致系统不稳定或进程被终止。"read-p"是否继续?(y/N) "CONFIRMif[[!$CONFIRM=~^[Yy]$]];thenlog"用户取消了操作。"exit0fifi# 尝试优雅地将交换数据移回物理内存log"尝试将交换数据移回物理内存..."sync# 同步文件系统sleep5# 等待系统有时间将数据移回内存# 禁用交换空间log"正在禁用所有交换空间..."swapoff -av>>$LOG_FILE2>&1if[$?-eq0];thenlog"成功:所有交换空间已禁用!"# 验证禁用结果log"禁用后交换空间状态:"free-h>>$LOG_FILEecho"\n交换空间已成功禁用!"echo"详细日志请查看:$LOG_FILE"elselog"错误:禁用交换空间失败!"echo"错误:禁用交换空间失败,请查看日志获取详细信息。"exit1filog"禁用交换空间脚本执行完成。"

4. 调整交换空间大小时禁用交换空间

在需要调整交换空间大小的场景中,可以先禁用交换空间,然后进行调整:

# 调整交换文件大小的完整步骤:# 步骤1:查看当前交换文件信息sudoswapon--show# 步骤2:禁用交换文件sudoswapoff /swapfile# 步骤3:删除旧的交换文件sudorm/swapfile# 步骤4:创建更大的交换文件(例如8GB)sudofallocate -l 8G /swapfile# 步骤5:设置适当的权限sudochmod600/swapfile# 步骤6:将文件格式化为交换空间sudomkswap/swapfile# 步骤7:重新启用交换文件sudoswapon/swapfile# 步骤8:验证新的交换空间sudoswapon--showfree-h

5. 禁用交换空间以提高性能

在某些情况下,临时禁用交换空间可以提高系统性能,特别是当系统有足够的物理内存时:

# 查看系统内存和交换空间使用情况free-hsudoswapon--show# 如果有足够的物理内存且交换空间使用率很低,可以考虑临时禁用交换空间sudoswapoff -a# 测试系统性能# ...执行需要测试的操作...# 测试完成后,重新启用交换空间sudoswapon-a

6. 仅禁用特定类型的交换空间

可以结合其他命令,仅禁用特定类型的交换空间:

# 仅禁用所有交换文件(保留交换分区)forswap_filein$(swapon--show|grepfile|awk'{print $1}');dosudoswapoff"$swap_file"done# 仅禁用所有交换分区(保留交换文件)forswap_partitionin$(swapon--show|greppartition|awk'{print $1}');dosudoswapoff"$swap_partition"done

四、实用技巧与常见问题

实用技巧

  1. 在系统启动时禁用交换空间

如果需要在系统启动时自动禁用交换空间,可以修改系统配置:

# 编辑/etc/fstab文件sudonano/etc/fstab# 找到交换空间的配置行,在开头添加#符号将其注释掉# UUID=1234abcd-5678-90ef-ab12-34567890abcd none swap sw 0 0# /swapfile none swap sw 0 0# 保存并退出,重启系统后交换空间将不会自动启用
  1. 监控交换空间使用情况

在禁用交换空间之前,使用以下命令监控交换空间的使用情况:

# 实时监控内存和交换空间使用情况top# 或者使用htop(需要安装)htop# 查看哪些进程正在使用交换空间sudosmem -s swap# 或者使用以下命令sudoawk'/^Swap:/ {swap=$2} END {print swap}'/proc/*/smaps2>/dev/null|sort-n|tail-10
  1. 禁用交换空间前的数据同步

在禁用交换空间之前,最好先执行数据同步操作,确保所有数据都已写入磁盘:

# 在禁用交换空间前执行数据同步sudosyncsudoswapoff -a
  1. 调整swappiness参数而不是禁用交换空间

如果只是想减少系统对交换空间的依赖,可以调整swappiness参数,而不是完全禁用交换空间:

# 临时调整swappiness值(例如设置为10)sudosysctl vm.swappiness=10# 永久调整swappiness值sudonano/etc/sysctl.conf# 添加以下行vm.swappiness=10
  1. 使用swapoff和swapon刷新交换空间

可以结合使用swapoffswapon命令来刷新交换空间,清除其中的所有数据:

# 刷新交换空间(注意:确保有足够的物理内存可用)sudoswapoff -asudoswapon-a

常见问题

  1. 禁用交换空间时系统冻结

问题描述:执行swapoff命令时,系统变得非常缓慢或冻结。

解决方法

  • 这通常是因为系统物理内存不足,无法将所有交换数据移回内存
  • 确保在禁用交换空间前,系统有足够的可用物理内存
  • 可以先关闭一些占用内存大的进程,释放更多物理内存
  1. 无法禁用交换空间

问题描述:执行swapoff命令时出现"Operation not permitted"或"Device or resource busy"错误。

解决方法

  • 确保以root权限运行命令(使用sudo
  • 检查是否有进程正在锁定交换空间
  • 尝试使用-v参数查看详细错误信息
  1. 禁用交换空间后系统性能下降

问题描述:禁用交换空间后,系统性能反而下降。

解决方法

  • 这可能是因为系统物理内存不足,无法满足所有进程的内存需求
  • 检查系统内存使用情况:free -h
  • 如果物理内存确实不足,考虑重新启用交换空间或增加物理内存
  1. 交换空间没有完全禁用

问题描述:执行swapoff -a后,仍然有部分交换空间处于启用状态。

解决方法

  • 使用swapon --show命令检查哪些交换空间仍在使用
  • 尝试单独禁用这些交换空间:sudo swapoff /path/to/swap
  • 检查是否有交换空间被多个进程锁定
  1. 禁用交换空间后某些进程崩溃

问题描述:禁用交换空间后,一些进程崩溃或变得不稳定。

解决方法

  • 这通常是因为这些进程依赖于交换空间来管理内存
  • 立即重新启用交换空间:sudo swapon -a
  • 检查系统日志以获取更多信息:sudo journalctl -xe

五、总结

swapoff命令是Linux系统中用于禁用交换空间的重要工具,通过本文的详细介绍和实例,相信您已经掌握了swapoff命令的基本用法和高级技巧,包括如何禁用特定的交换空间、如何禁用所有交换空间、如何在脚本中安全地禁用交换空间、如何在调整交换空间大小时使用swapoff等。

在实际工作中,swapoff常用于系统维护、性能优化和资源管理等场景。使用时,请注意以下几点:始终以root权限运行命令,确保系统有足够的物理内存可用,在禁用交换空间前执行数据同步,以及了解禁用交换空间可能带来的影响。

记住,交换空间是Linux系统内存管理的重要组成部分,完全禁用交换空间可能会导致系统不稳定,特别是在物理内存不足的情况下。在大多数情况下,调整swappiness参数或优化系统内存使用可能是比完全禁用交换空间更好的选择!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 3:15:34

【Linux命令大全】008.磁盘维护之symlinks命令(实操篇)

【Linux命令大全】008.磁盘维护之symlinks命令(实操篇) ✨ 本文为Linux系统磁盘维护命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。 (关注不迷路哈!!&#xff0…

作者头像 李华
网站建设 2026/4/5 16:24:44

从外包菜鸟到高手,XinServer 是我的秘密武器

从外包菜鸟到高手,XinServer 是我的秘密武器 兄弟们,不知道你们有没有过这种经历:老板或者客户拍着桌子说,“这个功能很简单,不就是个增删改查吗?下周一能上线不?” 你表面笑嘻嘻,心…

作者头像 李华
网站建设 2026/4/3 5:10:32

<span class=“js_title_inner“>当 AI 能写出比中级程序员更好的代码之后,我开始重新思考“程序员的价值”</span>

最近一段时间,我几乎把所有能接触到的 AI IDE、AI 编程工具,都放进了真实的软件开发流程里。不是尝鲜,也不是体验,而是真的让它们参与到业务开发、系统重构和性能优化中。一开始,我并没有抱太高的期待。 毕竟写了十多年…

作者头像 李华
网站建设 2026/4/3 2:15:06

开源算法体系OpenMMLab

开源算法体系OpenMMLab 一、OpenMMLab概述 OpenMMLab是一个由中国主导的计算机视觉开源项目,诞生于2018年,是具有国际影响力的计算机视觉开源算法体系,并在2022年视觉人工智能大会上发布了OpenMMLab2.0版本。 该项目涵盖多种计算机视觉任…

作者头像 李华
网站建设 2026/4/11 2:52:32

用 phpize 确保版本匹配的庖丁解牛

“用 phpize 确保版本匹配” 是 PHP 扩展开发中 避免 ABI(Application Binary Interface)不兼容导致崩溃 的关键步骤。phpize 通过读取目标 PHP 的配置,生成与之完全匹配的构建环境,确保扩展能安全加载。 一、核心原理&#xff1a…

作者头像 李华
网站建设 2026/4/5 14:15:04

出国留学PS文档压缩技巧,申请上传格式标准一览

申请海外院校时,出国留学PS(个人陈述)是院校审核的核心材料,很多同学在上传环节频繁碰壁:PS文档体积超标无法提交、Word格式不兼容、PDF过大上传卡顿、排版错乱被系统退回,反复修改耽误申请窗口期。留学申请PS文档有通用官方规范&…

作者头像 李华