如何看linux内存使用情况

Linux 中,可通过执行 free -m 命令查看内存使用情况,包括总量

Linux 系统中,有多种方法可以查看内存使用情况,以下是详细介绍:

使用 free 命令

free 命令是最常用的查看内存使用情况的工具之一,它显示了系统内存的总量、已使用量、空闲量以及缓存和缓冲区的使用情况。

基本用法
在终端中输入 free,会得到如下输出:

              total        used        free      shared  buff/cache   available
Mem:        16385872     2454608     11269328      145520     2664936    13437728
Swap:        2097148           0     2097148
  • total:总内存大小。
  • used:已使用内存大小。
  • free:空闲内存大小。
  • shared:共享内存大小,通常用于进程间通信。
  • buff/cache:缓冲区和缓存占用的内存大小。
  • available:对于新启动的应用程序,可用的内存大小,这个值考虑了缓冲区和缓存中可回收的部分。

常用选项

  • -h:以人类可读的形式显示内存大小(如 MB、GB 等)。free -h 输出可能如下:
                total        used        free      shared  buff/cache   available
    Mem:           16G        2.3G         10G        138M        2.5G         12.8G
    Swap:          2.0G          0B         2.0G
  • -m:以兆字节为单位显示内存大小。
  • -k:以千字节为单位显示内存大小。

使用 top 命令

top 命令是一个动态的系统监控工具,可以实时查看系统的资源使用情况,包括内存使用情况。

基本界面
运行 top 命令后,会看到如下类似的界面:

top 14:32:11 up  1:23,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.2 us,  0.5 sy,  0.0 ni, 98.2 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem : 16385872 total,   2454608 used,  11269328 free,   145520 used.buff/cache
KiB Swap: 2097148 total,          0 used,  2097148 free.   1054444 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1234 root      20   0   123456   6789   1234 S  0.1  0.0   0:00.12 systemd
...
  • 第一行显示了当前时间、系统运行时间、用户数量和系统平均负载。
  • Tasks 行显示了任务的总数以及不同状态的任务数量。
  • %Cpu(s) 行显示了 CPU 的使用情况。
  • KiB Mem 行显示了内存的总量、已使用量、空闲量、缓冲区和缓存使用量以及可用内存量。
  • KiB Swap 行显示了交换分区的总量、已使用量、空闲量和可用交换空间。
  • 下面的列表显示了各个进程的信息,包括进程 ID、用户、优先级、虚拟内存使用量、常驻内存使用量、共享内存使用量、进程状态、CPU 使用率、内存使用率、运行时间和命令。

排序和筛选
top 界面中,可以通过按下 M 键按照内存使用率对进程进行排序,方便查看哪些进程占用内存较多,也可以按下 P 键按照 CPU 使用率排序,或者按下 T 键按照运行时间排序等。

使用 htop 命令

htoptop 命令的一个增强版,提供了更友好的界面和更多的功能,如果系统中没有安装 htop,可以使用包管理器进行安装,例如在 Ubuntu 系统中使用 sudo apt-get install htop

界面特点
htop 的界面比 top 更加直观和美观,它使用了颜色来区分不同的信息,并且支持鼠标操作,在 htop 界面中,可以直接点击列头对进程进行排序,还可以通过左右箭头键切换排序方式。

操作示例
运行 htop 后,可以看到类似以下的界面:

[ 14:35:23 ]  [ System monitoring with htop ]
Load average: 0.00 0.01 0.05                                                            uptime 01:25:45
Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie                         Tasks
%Cpu(s):  1.3 us,  0.5 sy,  0.0 ni, 98.1 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st               cpu
KiB Mem : 16385872 total,   2454608 used,  11269328 free,   145520 used.buff/cache             memory
KiB Swap: 2097148 total,          0 used,  2097148 free.   1054444 avail Mem                 swap
  PID USER      PRI  VIRT   RES   SHR %CPU %MEM    TIME+ ARGS
 1234 root        20 123456  6789   1234  0.1  0.0   0:00.12 /usr/sbin/systemd
...

top 类似,htop 也显示了系统的各种资源使用情况和进程信息,不同的是,htop 的界面更加清晰易读,并且可以通过鼠标点击和键盘快捷键进行各种操作。

使用 vmstat 命令

vmstat 命令提供了关于系统虚拟内存、进程、CPU 等方面的详细信息,其中也包含了内存使用情况的相关数据。

基本用法
运行 vmstat 命令后,会得到如下输出:

procs -----------memory------------swap------io----system-------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 11269328 145520 2664936    0    0    10    20   5   10  1  0 98  0  0
  • procsr 表示运行队列中的进程数,b 表示等待资源的进程数。
  • memoryswpd 表示使用的交换分区大小,free 表示空闲内存大小,buff 表示缓冲区大小,cache 表示缓存大小。
  • swapsi 表示从交换分区读取的内存大小,so 表示写入交换分区的内存大小。
  • iobi 表示从块设备读取的数据量,bo 表示写入块设备的数据量。
  • systemin 表示每秒的中断次数,cs 表示每秒的上下文切换次数。
  • cpuus 表示用户空间 CPU 使用率,sy 表示内核空间 CPU 使用率,id 表示空闲 CPU 使用率,wa 表示等待 I/O 的 CPU 使用率,st 表示被偷走的 CPU 时间(用于虚拟机)。

常用选项

  • -s:设置采样时间间隔,单位为秒。vmstat -s 5 表示每隔 5 秒采样一次。
  • -n:设置采样次数。vmstat -n 5 表示采样 5 次后退出。

查看 /proc/meminfo 文件

/proc/meminfo 文件包含了系统内存的详细信息,可以直接查看该文件来获取内存使用情况。

查看方法
使用 cat 命令可以查看 /proc/meminfo 文件的内容,cat /proc/meminfo,输出可能如下:

MemTotal:        16385872 kB
MemFree:         11269328 kB
MemAvailable:    13437728 kB
Buffers:          145520 kB
Cached:          2664936 kB
SwapCached:            0 kB
Active_anon:       89234 kB
Inactive_anon:     45678 kB
Active_file:       12345 kB
Inactive_file:      6789 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        2097148 kB
SwapFree:         2097148 kB
Dirty:                0 kB
Writeback:             0 kB
AnonPages:        456789 kB
Mapped:           123456 kB
Shmem:             145520 kB
Slab:              23456 kB
SReclaimable:       1234 kB
SUnreclaim:         5678 kB
KernelStack:        1234 kB
PageTables:          567 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     18476220 kB
Committed_AS:     1234567 kB
VmallocTotal:     123456789 kB
VmallocUsed:       123456 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4kGreen:       0 kB
DirectMap4kRed:        0 kB
DirectMap2MGreen:       0 kB
DirectMap2MRed:        0 kB

该文件中包含了各种内存相关的信息,如总内存、空闲内存、可用内存、缓冲区大小、缓存大小、交换分区大小等,可以通过查找特定的关键字来获取所需的信息。

以下是一些常见的关键字及其含义:

  • MemTotal:总内存大小。
  • MemFree:空闲内存大小。
  • MemAvailable:可用内存大小,考虑了缓冲区和缓存中可回收的部分。
  • Buffers:缓冲区大小。
  • Cached:缓存大小。
  • SwapTotal:交换分区总大小。
  • SwapFree:交换分区空闲大小。

小编总结对比

命令 优点 缺点 适用场景
free 简单直接,快速查看内存总体使用情况 信息相对简略 需要快速了解内存大致使用情况时
top 实时动态显示系统资源和进程信息,可按多种方式排序 界面相对复杂,信息量大时可能难以快速找到关键信息 需要实时监控系统资源和进程运行情况,分析哪个进程占用资源过多时
htop 界面友好,操作方便,功能更强大 需要额外安装 希望有更直观、便捷的界面来查看和管理系统资源时
vmstat 提供系统虚拟内存、进程、CPU等多方面详细信息 输出信息较多,需要一定时间理解各字段含义 需要深入了解系统整体运行状况,包括内存、CPU、I/O 等交互情况时
查看 /proc/meminfo 信息全面详细 需要手动查找和解读特定信息 需要获取非常详细的内存相关信息,进行深入分析时

在 Linux 系统中查看内存使用情况有多种方法可供选择,每种方法都有其特点和适用场景,可以根据具体需求选择合适的命令或工具来查看内存使用情况,以便更好地管理和优化系统资源。

FAQs

为什么 free 命令显示的可用内存和 top 命令显示的可用内存不一样?
答:free 命令中的 available 列表示对于新启动的应用程序,可用的内存大小,它考虑了缓冲区和缓存中可回收的部分,而 top 命令中的 available Mem 也是类似的概念,但它们的计算方式可能略有不同。top 命令还会受到其他因素的影响,如进程的内存使用情况、系统的负载等,两者显示的可用内存可能会有所差异。

如何判断系统是否存在内存泄漏?
答:判断系统是否存在内存泄漏可以通过以下几种方法:

  1. 持续观察内存使用情况:使用 freetophtop 等命令定期查看内存使用情况,如果发现内存使用量持续增加且没有明显的下降趋势,可能是存在内存泄漏。
  2. 检查进程内存使用:在 tophtop 命令中,观察各个进程的内存使用情况,如果有某个进程的内存使用量持续增长且没有释放,可能是该进程存在内存泄漏,可以进一步排查该进程的代码或配置,找出内存泄漏的原因。
  3. 使用专业工具:有一些专门的工具可以用于检测内存泄漏,如 Valgrind 等,这些工具可以在程序运行时对其进行监控,检测出内存泄漏的位置和原因。

以上就是关于“如何看linux内存使用情况”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

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

(0)
酷番叔酷番叔
上一篇 2小时前
下一篇 2小时前

相关推荐

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信