Linux如何查看swap分区的大小?

在Linux系统中,swap(交换空间)是作为物理内存的补充,当物理内存不足时,系统会将部分不常用的数据暂时存放到swap空间中,从而保证当前运行的程序能够继续执行,查看swap的大小和使用情况,对于系统性能监控、资源优化以及故障排查都至关重要,本文将详细介绍Linux系统中查看swap大小的多种方法,包括常用命令的参数说明、输出解读以及不同场景下的适用性。

linux 如何查看swap大小

使用free命令查看swap基本信息

free命令是最常用、最基础的内存查看工具,能够以简洁的表格形式展示系统内存和swap的总量、已用、空闲等信息。

基本用法

free -h

-h参数表示以“人类可读”的格式显示(如KB、MB、GB),避免输出大量数字,便于快速理解。

输出解读

执行free -h后,输出通常包含两行(totalusedfreesharedbuff/cacheavailable)和两列(MemSwap),与swap直接相关的列是Swap列,具体含义如下:

  • total:swap的总大小(包括所有swap分区和swap文件);
  • used:当前已使用的swap大小;
  • free:当前空闲的swap大小;
  • available:可用swap大小(通常与free相近,但可能考虑了系统保留空间)。

示例输出

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        3.2G        512M        2.4G        4.8G
Swap:          2.0G        500M        1.5G

从示例中可知,系统swap总大小为2.0GB,已使用500MB,剩余1.5GB可用。

优势与局限

  • 优势:命令简单直观,适合快速查看swap总量和基本使用情况;
  • 局限:无法区分swap是分区还是文件,也无法显示swap设备的详细信息(如路径、类型)。

使用swapon命令查看swap详细信息

swapon命令用于管理swap空间,通过--show参数可以列出系统中所有已启用的swap设备的详细信息,包括设备名称、类型、大小、使用量等。

基本用法

swapon --show

输出解读

输出表格包含以下列:

  • NAME:swap设备的名称(如/dev/sda2/swapfile);
  • TYPE:swap类型(partition表示分区,file表示文件,zram表示压缩内存swap);
  • SIZE:swap大小(默认以KB为单位,可加-h参数转为人类可读格式);
  • USED:已使用量;
  • PRIO:swap优先级(数值越小优先级越高,系统会优先使用高优先级的swap)。

示例输出

NAME      TYPE   SIZE   USED PRIO
/dev/sda2 partition 2G 500M   -2
/swapfile file     1G   0M   -3

从示例中可知,系统有两个swap设备:一个是/dev/sda2分区(2GB,已用500MB,优先级-2),另一个是/swapfile文件(1GB,未使用,优先级-3)。

扩展用法

若需查看swap的总量和已用总量(类似free的汇总),可使用:

swapon --show --noheadings | awk '{sum+=$3; used+=$4} END {print "Total:", sum/1024/1024 "GB", "Used:", used/1024/1024 "GB"}'

查看/proc/swaps文件

/proc/swaps是Linux内核提供的虚拟文件,记录了当前系统中所有swap设备的信息,与swapon --show类似,但更底层,适合脚本处理或直接读取。

linux 如何查看swap大小

基本用法

cat /proc/swaps

输出解读

输出格式与swapon --show类似,包含FilenameTypeSizeUsedPriority列,

Filename         Type        Size      Used    Priority
/dev/sda2       partition   2097152   512000    -2
/swapfile       file        1048576   0        -3

其中SizeUsed单位为KB,可通过awk等工具转换为更易读的单位。

优势

适合在脚本中解析swap信息,例如检查swap是否启用:

[ -s /proc/swaps ] && echo "Swap is enabled" || echo "Swap is disabled"

使用vmstat命令监控swap活跃度

vmstat(Virtual Memory Statistics)命令用于监控系统进程、内存、I/O、CPU等状态,通过特定参数可以查看swap的使用频率和活跃情况,判断系统是否频繁依赖swap。

基本用法

vmstat -s

-s参数以统计表形式显示内存和swap的详细信息。

输出解读

输出中与swap相关的行包括:

  • total swap used:已使用的swap总量;
  • total swap free:空闲swap总量;
  • swap in:从swap读入内存的数据总量(单位KB);
  • swap out:写入swap的内存数据总量(单位KB)。

示例:

...
total swap used 512000
total swap free 1572864
swap in 0
swap out 1048576
...

动态监控swap使用情况(每秒更新):

vmstat 1

输出中的si(swap in)和so(swap out)列表示每秒swap的读写量,若这两个数值持续较高,说明系统内存不足,频繁使用swap,可能影响性能。

linux 如何查看swap大小

使用tophtop命令实时监控swap

tophtop是交互式进程监控工具,可以在内存使用区域实时显示swap的总量和使用量,适合动态观察swap变化。

top命令

执行top后,按Shift + M按内存排序,在顶部信息栏找到KiB Swap行,

KiB Swap: 2097152 total, 512000 used, 1572864 free

表示swap总量2GB,已用500MB。

htop命令

htop界面更直观,在“MEM”区域下方会显示“SWAP”信息,包括总量、已用、空闲,且可用颜色区分使用比例。

不同方法对比与适用场景

为方便选择,以下表格总结了各方法的优缺点和适用场景:

命令/文件 用途 输出信息 适用场景
free -h 快速查看swap总量和使用量 swap的总量、已用、空闲 日常快速检查,无需详细信息
swapon --show 查看所有swap设备详细信息 设备名、类型、大小、使用量、优先级 需区分swap类型或优先级时
/proc/swaps 脚本解析swap信息 设备名、类型、大小、使用量、优先级 自动化脚本、底层信息查看
vmstat -s 统计swap总量和读写量 swap总量、已用、空闲、读写总量 分析swap活跃度,判断内存压力
top/htop 实时监控swap使用变化 swap总量、已用、空闲(动态) 实时监控,观察swap使用趋势

进阶补充:swap大小建议与优化

swap大小配置建议

  • 物理内存≤8GB:swap大小建议为物理内存的1-2倍;
  • 物理内存8GB-64GB:swap大小建议与物理内存相等;
  • 物理内存>64GB:swap可适当减少(如32GB-64GB),避免swap占用过多磁盘空间。
  • zram:对于内存有限的设备(如树莓派),可使用zram(压缩内存swap),减少磁盘I/O。

swap使用率高怎么办?

  • 检查内存占用:使用topps aux查找占用内存高的进程,优化或终止异常进程;
  • 调整swappinessswappiness参数(0-100)控制swap使用倾向,值越高越倾向于使用swap,临时调整:sudo sysctl vm.swappiness=60;永久修改:编辑/etc/sysctl.conf,添加vm.swappiness=60
  • 增加物理内存:若swap频繁使用且系统卡顿,最根本的解决方法是增加物理内存。

相关问答FAQs

问题1:如何判断swap是否足够?
解答:判断swap是否足够需结合物理内存和系统负载,可通过free -h查看swap剩余量,若swap使用率长期超过80%且物理内存不足,说明swap可能不足;同时用vmstat 1观察si/so值,若持续较高(如超过100MB/s),说明系统频繁依赖swap,需考虑增加swap或物理内存,对于普通桌面应用,swap为物理内存1-2倍足够;对于服务器,需根据业务负载(如数据库、虚拟机)适当增加。

问题2:swap使用率为0是否正常?
解答:swap使用率为0通常是正常的,说明系统当前物理内存充足,未启用swap,但需结合系统负载判断:若内存使用率已接近100%(如free -hMemavailable接近0),而swap仍为0,可能存在内存泄漏风险,需检查进程内存占用;若内存使用率较低(如available充足),swap为0则完全正常,无需处理。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/15486.html

(0)
酷番叔酷番叔
上一篇 2025年8月23日 21:04
下一篇 2025年8月23日 21:15

相关推荐

  • CPU支持虚拟化吗?一键检测

    基础硬件准备(性能基石)CPU必须支持虚拟化技术(Intel VT-x / AMD-V),在BIOS/UEFI中启用,建议≥4核处理器(如Intel i5/Ryzen 5以上),多核心分配虚拟机更高效,内存 宿主机内存≥8GB,为虚拟机分配≥4GB(如运行Android 10+),存储使用SSD:比HDD提速5……

    2025年7月25日
    13700
  • Linux权限配置不当,服务器会被黑?

    理解Linux权限基础权限三元组r(读):查看文件/目录内容w(写):修改或删除x(执行):运行程序或进入目录通过 ls -l 查看权限(如 -rwxr–r– 表示所有者有读写执行,同组和其他用户仅有读权限),权限对象用户(User):文件所有者组(Group):共享权限的用户集合其他(Others):系统……

    2025年7月17日
    14000
  • 在Linux操作系统中,使用浏览器下载文件的具体操作步骤是什么?

    在Linux操作系统中,使用浏览器下载文件是最常见的操作之一,无论是日常办公还是开发学习,都离不开这一功能,Linux下主流浏览器如Firefox、Chrome、Chromium、Edge等均提供了图形化下载界面,操作逻辑与Windows/macOS类似,但结合Linux的特性,部分细节(如下载路径管理、命令行……

    2025年9月22日
    12900
  • 为什么推荐命令行查看?

    在Linux系统中,环境变量是配置操作系统和应用程序行为的关键参数,桌面环境变量(如XDG_CURRENT_DESKTOP、GDMSESSION等)则专门用于管理图形界面(GUI)的显示效果、主题和默认程序,查看这些变量对调试桌面问题、定制个性化环境或开发跨桌面应用至关重要,以下是多种查看方法的详细说明:全局环……

    2025年6月27日
    13400
  • 如何设置Linux系统语言为英文?

    在Linux系统中,将语言环境设置为英文通常是为了避免因编码问题导致的显示异常、符合开发环境需求,或使用部分仅支持英文的软件,以下是不同场景下设置Linux语言为英文的详细方法,涵盖图形界面和命令行操作,适用于主流发行版如Ubuntu、Debian、CentOS、Fedora等,通过图形界面设置(适合桌面用户……

    2025年8月25日
    11300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信