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
命令
htop
是 top
命令的一个增强版,提供了更友好的界面和更多的功能,如果系统中没有安装 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
procs
:r
表示运行队列中的进程数,b
表示等待资源的进程数。memory
:swpd
表示使用的交换分区大小,free
表示空闲内存大小,buff
表示缓冲区大小,cache
表示缓存大小。swap
:si
表示从交换分区读取的内存大小,so
表示写入交换分区的内存大小。io
:bi
表示从块设备读取的数据量,bo
表示写入块设备的数据量。system
:in
表示每秒的中断次数,cs
表示每秒的上下文切换次数。cpu
:us
表示用户空间 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
命令还会受到其他因素的影响,如进程的内存使用情况、系统的负载等,两者显示的可用内存可能会有所差异。
如何判断系统是否存在内存泄漏?
答:判断系统是否存在内存泄漏可以通过以下几种方法:
- 持续观察内存使用情况:使用
free
、top
或htop
等命令定期查看内存使用情况,如果发现内存使用量持续增加且没有明显的下降趋势,可能是存在内存泄漏。 - 检查进程内存使用:在
top
或htop
命令中,观察各个进程的内存使用情况,如果有某个进程的内存使用量持续增长且没有释放,可能是该进程存在内存泄漏,可以进一步排查该进程的代码或配置,找出内存泄漏的原因。 - 使用专业工具:有一些专门的工具可以用于检测内存泄漏,如 Valgrind 等,这些工具可以在程序运行时对其进行监控,检测出内存泄漏的位置和原因。
以上就是关于“如何看linux内存使用情况”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/12103.html