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

相关推荐

  • Linux系统如何更改域名?详细步骤与方法指南

    在Linux系统中更改域名涉及多个层面的配置,包括系统主机名、DNS解析、Web服务配置及本地hosts文件等,不同场景下操作步骤有所不同,需结合实际需求逐步调整,以下从基础到进阶详细说明更改域名的全流程,涵盖常见Linux发行版(如Ubuntu/Debian、CentOS/RHEL)的差异操作,修改Linux……

    2025年8月22日
    4400
  • Linux如何使用crontab创建和管理计划任务?

    在Linux系统中,计划任务是实现自动化运维的关键功能,能够帮助用户在指定时间自动执行脚本、命令或程序,避免人工干预,提高工作效率,Linux中最常用的计划任务工具是cron和at,其中cron适用于周期性重复的任务,而at适用于一次性任务,本文将详细介绍如何使用cron创建计划任务,包括其工作原理、配置方法……

    2025年10月5日
    1400
  • 电脑如何装双系统linux系统盘

    备份重要数据,准备 Linux 安装盘,在电脑 BIOS 中设置启动顺序,按

    2025年8月13日
    3000
  • 服务异常如何快速处理?

    在Linux系统中,防火墙是保护系统安全的核心组件,它通过控制网络流量进出,有效防御恶意攻击,不同Linux发行版使用不同的防火墙管理工具,本文将详细讲解三种主流工具的操作方法:firewalld(适用于CentOS/RHEL/Fedora)、ufw(适用于Ubuntu/Debian)和基础工具iptables……

    2025年6月14日
    6000
  • linux如何连接局域网ip

    Linux 中,可通过命令 ping [目标 IP]测试连通性,用 `ssh [用户名]

    2025年8月15日
    3600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信