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)
酷番叔酷番叔
上一篇 3小时前
下一篇 3小时前

相关推荐

  • Linux 5.4如何挂载光驱?操作步骤是什么?

    在Linux 5.4系统中挂载光驱是一个基础但重要的操作,无论是读取系统安装镜像、备份数据还是访问光盘中的文件,都需要正确挂载光驱设备,本文将详细介绍从设备识别到挂载配置的完整流程,包括常见问题的解决方法,帮助用户顺利完成光驱挂载操作,确认光驱设备在挂载光驱前,首先需要确认系统是否已识别到光驱设备,Linux系……

    1天前
    100
  • Linux如何查看串口设备?

    通过设备文件列表查看(最直接)Linux将串口设备映射为/dev/ttyS*(物理串口)或/dev/ttyUSB*(USB转串口)文件:ls /dev/ttyS* /dev/ttyUSB* 2>/dev/null输出示例:/dev/ttyS0 /dev/ttyUSB0说明:ttyS0为主板原生串口,tty……

    2025年7月20日
    2200
  • Linux vi/vim保存文件救命指南

    基础保存操作进入命令模式编辑文件后,按 Esc 键退出插入模式(确保左下角无 — INSERT — 提示),执行保存命令仅保存不退出:输入 :w 后按回车,成功提示:”filename” [已写入] 行数, 字符数保存并退出:输入 :wq 或 :x 后按回车,强制保存(忽略警告):输入 :w!(适用于只读文……

    2025年7月25日
    1500
  • Linux如何查看已挂载U盘?

    命令行方法(推荐)lsblk 命令(最直观) lsblk -f作用:以树状结构列出所有块设备(硬盘、U盘、分区)的详细信息,输出关键字段:NAME:设备名称(如 sdb1),FSTYPE:文件系统类型(如 vfat、ntfs),MOUNTPOINT:挂载路径(如 /media/user/USB),操作示例……

    2025年7月16日
    2100
  • 死锁由哪四个条件引发?

    在Linux系统中,死锁(Deadlock)是多进程或多线程并发编程中的一种严重问题,指两个或多个执行单元因相互等待对方释放资源而永久阻塞的状态,它不仅会导致程序卡死,还可能引发系统资源耗尽,本文将详细讲解Linux下检测死锁的多种实用方法,帮助开发者和运维人员快速定位问题,在深入检测前,需理解死锁发生的条件……

    2025年6月15日
    2500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信