ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux命令-swapoff(关闭交换空间)

Linux命令-swapoff(关闭交换空间) Linux命令-swapoff关闭交换空间快速参考基本用法选项详解⚠️ 危险操作及回滚方案交换空间管理操作流程监控与检查脚本swapon vs swapoffswapoff用于停用 Linux 系统上的交换空间swap space包括交换分区和交换文件。它将被占用的交换页面迁移回物理内存然后将指定的交换空间从系统中移除。与swapon配对使用是内存管理中的重要工具。快速参考swapoff[选项]设备|文件警告执行swapoff前必须确保物理内存有足够空间容纳已换出的页面。如果在内存不足的情况下强行禁用交换空间系统可能触发 OOM KillerOut of Memory Killer强制终止进程。基本用法# 查看当前交换空间使用情况swapon--show# 或free-h# 关闭指定交换分区sudoswapoff /dev/sdb2# 关闭指定交换文件sudoswapoff /swapfile# 关闭所有交换空间sudoswapoff-a# 关闭所有并显示详细信息sudoswapoff-av# 指定关闭时逐一处理的标签sudoswapoff-Lswap_partition_labelsudoswapoff-UUUID1234-abcd-5678-efgh选项详解选项说明-a关闭/etc/fstab中所有启用的交换空间-v详细模式-L LABEL按分区标签指定-U UUID按 UUID 指定-f强制关闭即使可能失败# 关闭交换分区多种标识方式sudoswapoff /dev/sda3# 设备节点sudoswapoff-U12345678-abcd-efgh-ijkl-1234567890ab# UUIDsudoswapoff-Lswap_partition# 标签Label# 查看 swapoff 操作过程sudoswapoff-v/swapfile# swapoff /swapfile# 强制关闭风险操作sudoswapoff-f/dev/sdb2# 安全关闭的完整流程# 1. 检查当前内存和交换使用量free-h# 2. 确认可用物理内存 已用交换空间SWAP_USED$(free|awk/Swap:/ {print $3})MEM_AVAIL$(free|awk/Mem:/ {print $7})echo已用交换:${SWAP_USED}KB 可用内存:${MEM_AVAIL}KB# 3. 仅当可用内存足够时执行if[$MEM_AVAIL-gt$SWAP_USED];thensudoswapoff-aecho交换空间已关闭elseecho⚠️ 可用内存不足无法安全关闭交换空间fi⚠️ 危险操作及回滚方案# ❌ 危险在内存紧张时关闭交换空间# 症状系统变慢、应用崩溃、甚至系统无响应# 恢复物理重启或通过远程管理卡强制重启# ❌ 危险关闭 fstab 中配置的交换空间重启可能失败# 检查 /etc/fstabgrepswap /etc/fstab# ✅ 安全操作流程# 1. 创建临时交换文件作为缓冲sudoddif/dev/zeroof/tmp/emergency_swapbs1Mcount1024sudochmod600/tmp/emergency_swapsudomkswap/tmp/emergency_swapsudoswapon/tmp/emergency_swap# 2. 现在可以安全关闭目标交换空间sudoswapoff /dev/sdb2# 3. 确认状态swapon--show# 4. 不需要临时交换时可以关闭sudoswapoff /tmp/emergency_swapsudorm/tmp/emergency_swap# 回滚方案# 如果 swapoff 失败内存不足立即重新启用sudoswapon/dev/sdb2# 恢复原交换空间sudoswapon-a# 或恢复所有# 如果系统因 OOM 而挂死# 1. 通过 IPMI/iLO 等远程管理卡强制重启# 2. 使用 AltSysRqf 触发 OOM Killer 手动执行# 按住 AltSysRqPrint Screen依次按R E I S U B# 3. 系统重启后会自动根据 fstab 重新启用交换空间交换空间管理操作流程# 完整的交换空间调整流程如搬迁交换空间# 1. 查看当前状态swapon--showfree-hlsblk|grepswap# 2. 创建新的交换空间以文件为例sudofallocate-l4G /new_swapfilesudochmod600/new_swapfilesudomkswap/new_swapfile# 3. 启用新的交换空间sudoswapon/new_swapfile# 4. 关闭旧的交换空间sudoswapoff /dev/old_swap_partition# 5. 验证新配置swapon--showfree-h# 6. 更新 /etc/fstab# 移除旧交换空间条目添加新条目echo/new_swapfile none swap sw 0 0|sudotee-a/etc/fstab监控与检查脚本# 交换空间使用监控脚本cat/usr/local/bin/swap_monitor.shEOF #!/bin/bash THRESHOLD80 # 使用率超过 80% 触发告警 echo 交换空间报告 $(date) TOTAL_SWAP$(free | awk /Swap:/ {print $2}) USED_SWAP$(free | awk /Swap:/ {print $3}) if [ $TOTAL_SWAP -eq 0 ]; then echo ⚠️ 系统没有交换空间 exit 1 fi USAGE$(( USED_SWAP * 100 / TOTAL_SWAP )) echo Total Swap: $((TOTAL_SWAP / 1024)) MB echo Used Swap: $((USED_SWAP / 1024)) MB echo Usage: ${USAGE}% if [ $USAGE -gt $THRESHOLD ]; then echo ❌ 交换空间使用率过高 (${USAGE}%) echo Top 10 内存消耗进程: ps aux --sort-%mem | head -11 exit 1 fi echo ✅ 交换空间状态正常 exit 0 EOFchmodx /usr/local/bin/swap_monitor.shswapon vs swapoff操作命令作用启用交换swapon /dev/sda2将分区/文件加入交换池关闭交换swapoff /dev/sda2将分区/文件移出交换池启用全部swapon -a启用 fstab 中所有交换关闭全部swapoff -a关闭所有激活的交换查看状态swapon --show显示启用的交换空间设置优先级swapon -p 10指定使用优先级操作原则关闭交换空间前务必通过free -h确认可用内存足以容纳已换出的页面生产环境最好在非高峰时段执行调整 fstab 后执行swapoff -a swapon -a可以刷新交换空间的挂载配置新建临时交换空间再关闭目标空间是最安全的调整方式
返回列表