在Linux系统中,交换分区(Swap Partition)是虚拟内存的重要组成部分,它作为物理内存(RAM)的延伸,当系统内存不足时,可将部分暂时不用的数据写入交换分区,从而释放内存供更紧急的任务使用,合理配置和管理交换分区,对于提升系统稳定性、避免内存溢出(OOM)至关重要,本文将详细介绍如何在Linux系统中查看交换分区的相关信息,包括基本概念、常用命令及实际应用场景。

交换分区的基本概念
交换分区是硬盘上的一块特殊区域,被Linux内核用作虚拟内存,当物理内存耗尽时,系统会将内存中不常用的页面(Page)交换到交换分区中,这个过程称为“换出”(Swap Out);当需要这些数据时,再从交换分区读回内存,称为“换入”(Swap In),交换分区的存在可以有效防止系统因内存不足而崩溃,但交换分区的读写速度远低于物理内存,因此不能完全替代物理内存。
交换分区的容量设置需要根据实际需求调整,一般建议交换分区大小为物理内存的1-2倍,但对于内存较大的服务器(如超过16GB),可适当减少交换分区比例,例如设置为与物理内存相等或更小,需要注意的是,SSD硬盘的读写速度较快,可作为交换分区的选择,但频繁的读写可能会影响SSD的寿命。
使用free命令查看交换分区概况
free命令是Linux中最常用的查看内存使用情况的工具之一,它可以快速显示物理内存、交换分区及缓存的使用状态,通过free命令,可以直观地了解交换分区的总容量、已使用量和剩余量。
基本语法与输出解析
执行free命令后,默认以KB为单位显示内存信息,
total used free shared buff/cache available
Mem: 16280960 3257304 9823672 123456 3199984 12015632
Swap: 8388608 0 8388608
Swap行表示交换分区的信息:
total:交换分区的总容量(此处为8GB);used:已使用的交换分区容量(此处为0,表示当前未使用);free:空闲的交换分区容量(此处为8GB,与total相等)。
使用-h参数以人类可读格式显示
默认情况下,free命令以KB为单位显示,不便于直观理解,使用-h(human-readable)参数,可以自动选择合适的单位(如MB、GB):
free -h
total used free shared buff/cache available
Mem: 15.5Gi 3.1Gi 9.4Gi 121Mi 3.1Gi 11.5Gi
Swap: 8.0Gi 0B 8.0Gi
交换分区的容量以GB为单位显示,更加清晰。

其他常用参数
-s:持续监控内存使用情况,例如free -s 3表示每3秒刷新一次数据;-m:以MB为单位显示,适用于需要精确数值的场景。
使用swapon命令查看交换分区详细信息
swapon命令用于管理交换分区,结合--show参数,可以显示当前系统中已启用的交换分区的详细信息,包括文件/设备路径、类型、大小及优先级等。
基本语法与输出解析
执行swapon --show命令,
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 8G 0B -2
输出结果的列含义如下:
NAME:交换分区的设备文件名或文件路径;TYPE:交换分区的类型,如partition(分区)或file(文件);SIZE:交换分区的大小;USED:已使用的交换分区大小;PRIO:交换分区的优先级,数值越大优先级越高,多个交换分区时可指定优先级。
查看未启用的交换分区
如果系统中配置了交换分区但未启用,可通过swapon --show查看不到信息,此时可使用cat /proc/swaps文件,该文件记录了系统中所有交换分区的状态(包括未启用的):
Filename Type Size Used Priority
/dev/sda2 partition 8388608 0 -2
使用cat /proc/meminfo查看交换分区相关指标
/proc/meminfo是Linux内核提供的内存信息虚拟文件,包含详细的内存和交换分区统计信息,通过该文件,可以查看交换分区的总容量、已使用量、空闲量等更底层数据。
关键指标解析
执行cat /proc/meminfo | grep -i swap命令,可筛选出与交换分区相关的行:
SwapTotal: 8388608 kB
SwapFree: 8388608 kB
SwapCached: 0 kB
SwapTotal:交换分区的总容量(KB);SwapFree:空闲交换分区容量(KB);SwapCached:被缓存到交换分区中的内存大小,这部分数据可被快速调回内存。
查看内存整体使用情况
/proc/meminfo还包含其他重要指标,如MemTotal(总物理内存)、MemAvailable(可用物理内存)等,结合这些指标可以全面评估系统内存压力:

cat /proc/meminfo | grep -E "MemTotal|MemAvailable|SwapTotal|SwapFree"
MemTotal: 16280960 kB
MemAvailable: 12015632 kB
SwapTotal: 8388608 kB
SwapFree: 8388608 kB
使用top或htop命令实时监控交换分区使用情况
top和htop是动态的系统监控工具,可以实时查看进程级别的内存和交换分区使用情况,通过这些工具,可以直观地观察交换分区的使用趋势及占用内存较多的进程。
top命令的使用
在top命令的界面中,KiB Swap行显示交换分区的总容量、已使用量和空闲量,按Shift + F后,选择SWAP字段,可按交换分区使用量对进程排序:
KiB Swap: 8388608 total, 0 used, 8388608 free, 8388608 cached
htop命令的使用
htop比top更直观,界面中会以进度条形式显示物理内存和交换分区的使用情况,在htop中,按F3搜索swap,可快速定位交换分区相关的信息:
[Memory Bar] [Swap Bar]
||||||||||||| ||||||||||||
交换分区使用场景分析与优化建议
何时需要关注交换分区使用率?
- 当系统频繁使用交换分区(如
SwapUsed持续较高)时,可能意味着物理内存不足,需考虑升级内存或优化应用程序; - 如果交换分区使用率突然飙升,可能是某个进程发生了内存泄漏,需通过
top或htop定位并处理相关进程。
优化交换分区的建议
- 调整交换分区大小:根据实际需求调整交换分区容量,避免过大或过小;
- 使用多个交换分区:通过设置不同优先级的交换分区,可实现负载均衡(如将SSD作为高优先级交换分区);
- 禁用交换分区:对于内存充足且要求高性能的服务器(如数据库服务器),可临时禁用交换分区(
sudo swapoff -a),但需谨慎操作,避免内存溢出。
查看Linux交换分区是系统管理和性能优化的重要技能,通过free、swapon、/proc/meminfo、top及htop等工具,可以全面了解交换分区的配置和使用情况,合理配置交换分区,结合系统实际需求进行优化,能有效提升系统的稳定性和性能,在日常运维中,建议定期监控交换分区使用率,及时发现并解决内存相关问题,确保系统高效运行。















