在Linux系统中,交换分区(Swap Partition)是虚拟内存的重要组成部分,它作为物理内存的延伸,当系统内存不足时,会将部分暂时不用的数据从RAM转移到交换分区中,从而为当前运行的程序释放更多内存空间,掌握交换分区的查看方法,对于系统性能监控、资源优化及故障排查至关重要,本文将详细介绍多种查看Linux交换分区的方式,涵盖基础命令、进阶分析及可视化工具,帮助用户全面掌握交换分区的状态信息。

使用free命令快速查看交换分区概况
free命令是Linux中最直观查看内存使用情况的工具,默认以KB为单位显示系统内存、交换分区及缓冲区的使用状态,通过添加不同参数,可以获取更详细的信息。
基础用法
直接执行free命令,会输出简化的内存摘要:
free
输出结果中,Swap行即为交换分区的信息,包括total(总大小)、used(已使用)、free(空闲)及shared(共享内存)、buff/cache(缓冲/缓存)等列。
total used free shared buff/cache available
Swap: 2047 512 1535 0 0 1535
此处显示交换分区总大小为2047MB,已使用512MB,空闲1535MB。
进阶参数
-h(human-readable):以人类可读格式显示(如GB、MB):free -h
输出更直观,例如
Swap: 2.0G 512M 1.5G。-s(seconds)+-n(count):动态监控交换分区使用情况,例如每2秒刷新一次,共刷新5次:free -s 2 -n 5
适用于观察交换分区在运行时的动态变化。
通过swapon命令查看交换分区详细信息
swapon命令用于管理系统交换空间,其--show参数可以清晰列出当前所有激活的交换分区的详细信息,包括文件/设备名、类型、大小及优先级。
基础用法
swapon --show
对于交换分区,输出可能如下:
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 2G 512G -2
其中NAME为交换分区设备名,TYPE为分区类型(如partition或file),SIZE为总大小,USED为已使用量,PRIO为优先级(数值越小优先级越高,系统会优先使用高优先级交换空间)。
结合grep过滤特定信息
若系统有多个交换分区,可通过grep筛选特定设备:
swapon --show | grep /dev/sda2
检查/proc/swaps文件获取原始交换分区数据
Linux内核会将交换分区信息存储在/proc/swaps文件中,这是一个虚拟文件,直接反映内核当前的交换空间状态。

cat /proc/swaps
输出格式与swapon --show类似,
Filename Type Size Used Priority
/dev/sda2 partition 2097148 524288 -2
其中Filename为设备名,Size和Used单位为KB(需手动换算为GB/MB)。
结合awk提取关键数据
若需仅提取交换分区总大小,可使用awk:
cat /proc/swaps | awk 'NR>1{sum+=$3} END{print sum/1024/1024 "GB"}'
此命令会计算所有交换分区的总大小并以GB为单位输出。
使用lsblk或fdisk查看交换分区的磁盘布局
若需了解交换分区在磁盘中的具体位置(如所属磁盘、分区编号等),可通过lsblk或fdisk工具查看磁盘分区信息。
lsblk命令
lsblk | grep SWAP
或显示所有分区并筛选标记为SWAP的分区:
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT | grep swap
输出示例:
sda2 swap 2G
表明/dev/sda2是交换分区,大小为2GB。
fdisk命令
sudo fdisk -l | grep swap
此命令会列出所有磁盘分区,并筛选文件系统类型为swap的分区,同时显示分区起始/结束扇区及大小。
通过vmstat命令监控交换分区的活动情况
vmstat是虚拟统计工具,可实时监控系统内存、交换分区、CPU等资源的使用情况,重点关注si(从交换分区写入内存的数据量)和so(将内存数据写入交换分区的数据量)列。
基础用法
vmstat
在输出结果中,si和so列单位为KB/s,若持续为非零值,可能表明系统内存不足,频繁使用交换分区,影响性能。

动态监控
vmstat 1 5
每秒刷新一次,共5次,观察交换分区的读写活动趋势。
使用smem工具分析交换分区的精确占用
smem是一个更高级的内存分析工具,可精确显示进程的物理内存和交换内存占用,尤其适合排查哪些进程导致交换空间过度使用。
安装`smem“`
若系统未安装,需先通过包管理器安装(如Ubuntu/Debian):
sudo apt install smem
查看进程交换内存占用
smem --swap
输出会列出每个进程的Swap字段,即该进程占用的交换空间大小,单位为KB,可结合sort排序找出占用最高的进程:
smem --swap | sort -k4 -nr | head -10
交换分区状态分析与优化建议
通过上述命令获取交换分区信息后,需结合系统状态进行合理分析:
-
交换分区使用率过高:若
free或swapon --show显示used占比持续超过80%,且vmstat中si/so列频繁非零,可能表明物理内存不足,建议:- 增加物理内存;
- 优化应用程序内存使用;
- 调整
swappiness参数(通过cat /proc/sys/vm/swappiness查看,默认60,可临时调整如sudo sysctl vm.swappiness=30)。
-
交换分区未激活:若
swapon --show无输出或free显示Swap总大小为0,需检查交换分区是否正确挂载:sudo swapon -a # 激活所有配置的交换空间
Linux交换分区的查看方法多样,从基础的free到专业的smem,可根据需求选择合适的工具,通过综合分析交换分区的大小、使用率、活动进程等信息,可有效监控系统内存状态,及时优化资源配置,保障系统稳定运行,掌握这些命令,不仅能提升运维效率,也为深入理解Linux内存管理机制提供了实践基础。


















