Linux有问必答:如何检查Linux的内存使用状况

Linux有问必答:如何检查Linux的内存使用状况

问题:我想要监测Linux系统的内存使用状况。有哪些可用的图形界面或者命令行工具来检查当前内存使用情况?

当涉及到Linux系统性能优化的时候,物理内存是一个最重要的因素。自然的,Linux提供了丰富的选择来监测珍贵的内存资源的使用情况。不同的工具,在监测粒度(例如:全系统范围,每个进程,每个用户),接口方式(例如:图形用户界面,命令行,ncurses)或者运行模式(交互模式,批量处理模式)上都不尽相同。

下面是一个可供选择的,但并不全面的图形或命令行工具列表,这些工具用来检查Linux平台中已用和可用的内存。

1. /proc/meminfo

一种最简单的方法是通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是诸如free,top和ps这些与内存相关的工具的信息来源。从可用/闲置物理内存数量到等待被写入缓存的数量或者已写回磁盘的数量,只要是你想要的关于内存使用的信息,“/proc/meminfo”应有尽有。特定进程的内存信息也可以通过“/proc/<pid>/statm”和“/proc/<pid>/status”来获取。


  1. $ cat /proc/meminfo

2. atop

atop命令是用于终端环境的基于ncurses的交互式的系统和进程监测工具。它展示了动态更新的系统资源摘要(CPU, 内存, 网络, 输入/输出, 内核),并且用醒目的颜色把系统高负载的部分以警告信息标注出来。它同样提供了类似于top的线程(或用户)资源使用视图,因此系统管理员可以找到哪个进程或者用户导致的系统负载。内存统计报告包括了总计/闲置内存,缓存的/缓冲的内存和已提交的虚拟内存。


  1. $ sudo atop

3. free

free命令是一个用来获得内存使用概况的快速简单的方法,这些信息从“/proc/meminfo”获取。它提供了一个快照,用于展示总计/闲置的物理内存和系统交换区,以及已使用/闲置的内核缓冲区。


  1. $ free -h

4. GNOME System Monitor

GNOME System Monitor 是一个图形界面应用,它展示了包括CPU,内存,交换区和网络在内的系统资源使用率的较近历史信息。它同时也可以提供一个带有CPU和内存使用情况的进程视图。


  1. $ gnome-system-monitor

5. htop

htop命令是一个基于ncurses的交互式的进程视图,它实时展示了每个进程的内存使用情况。它可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享页面大小和脏页面大小。你可以横向或者纵向滚动进程列表进行查看。


  1. $ htop

6. KDE System Monitor

就像GNOME桌面拥有GNOME System Monitor一样,KDE桌面也有它自己的对口应用:KDE System Monitor。这个工具的功能与GNOME版本极其相似,也就是说,它同样展示了一个关于系统资源使用情况,以及带有每个进程的CPU/内存消耗情况的实时历史记录。


  1. $ ksysguard

7. memstat

memstat工具对于识别正在消耗虚拟内存的可执行部分、进程和共享库非常有用。给出一个进程识别号,memstat即可识别出与之相关联的可执行部分、数据和共享库究竟使用了多少虚拟内存。


  1. $ memstat -p <PID>

8. nmon

nmon工具是一个基于ncurses系统基准测试工具,它能够以交互方式监测CPU、内存、磁盘I/O、内核、文件系统以及网络资源。对于内存使用状况而言,它能够展示像总计/闲置内存、交换区、缓冲的/缓存的内存,虚拟内存页面换入换出的统计,所有这些都是实时的。


  1. $ nmon

9. ps

ps命令能够实时展示每个进程的内存使用状况。内存使用报告里包括了 %MEM (物理内存使用百分比), VSZ (虚拟内存使用总量), 和 RSS (物理内存使用总量)。你可以使用“--sort”选项来对进程列表排序。例如,按照RSS降序排序:


  1. $ ps aux --sort -rss

10. smem

smem命令允许你测定不同进程和用户的物理内存使用状况,这些信息来源于“/proc”目录。它利用“按比例分配大小(PSS)”指标来精确量化Linux进程的有效内存使用情况。内存使用分析结果能够输出为柱状图或者饼图类的图形化图表。


  1. $ sudo smem --pie name -c "pss"

11. top

top命令提供了一个运行中进程的实时视图,以及特定进程的各种资源使用统计信息。与内存相关的信息包括 %MEM (内存使用率), VIRT (虚拟内存使用总量), SWAP (换出的虚拟内存使用量), CODE (分配给代码执行的物理内存数量), DATA (分配给非执行的数据的物理内存数量), RES (物理内存使用总量; CODE+DATA), 和 SHR (有可能与其他进程共享的内存数量)。你能够基于内存使用情况或者大小对进程列表进行排序。

12. vmstat

vmstat命令行工具显示涵盖了CPU、内存、中断和磁盘I/O在内的各种系统活动的瞬时和平均统计数据。对于内存信息而言,命令不仅仅展示了物理内存使用情况(例如总计/已使用内存和缓冲的/缓存的内存),还同样展示了虚拟内存统计数据(例如,内存页的换入/换出,虚拟内存页的换入/换出)


  1. $ vmstat -s

原文发布时间:2015-02-06

本文来自云栖合作伙伴“linux中国”

时间: 2024-10-30 17:39:58

Linux有问必答:如何检查Linux的内存使用状况的相关文章

Linux有问必答-如何在Linux中安装Go语言

Linux有问必答-如何在Linux中安装Go语言 Go (也叫 "golang")是一款由Google最初开发的编程语言.它自诞生就有几个设计原则:简单性.安全性和速度.Go语言发行版拥有各种调试.测试.调优和代码审查工具.如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装. 在Ubuntu.Debian 或者 Linux Mint上安装Go语言 下面是在基于Debian的发行版上使用apt-get来安装Go语言和它的开发工具. $ sudo

Linux有问必答 - 如何在linux上安装WPS

Linux有问必答 - 如何在linux上安装WPS 问题: 我听说一个好东西Kingsoft Office(译注:就是WPS),所以我想在我的Linux上试试.我怎样才能安装Kingsoft Office呢? Kingsoft Office 是一套办公套件,支持多个平台,包括Windows, Linux, iOS 和 Android.它包含三个组件:Writer(WPS文字)用来文字处理,Presentation(WPS演示)支持幻灯片,Spereadsheets(WPS表格)是电子表格.其使

Linux 有问必答:在Linux桌面上创建视频DVD

Linux 有问必答:在Linux桌面上创建视频DVD 问题:我想要从MP4电影文件创建一张视频DVD,在Linux桌面环境中有没有我可以用来创建视频DVD的DVD创作工具? DeVeDe是一个开源(GPLv3)DVD创作软件,它允许你从任何数量的视频文件创建视频DVD.VCD.SVCD或者DivX.DeVeDe依赖于其它如Mplayer.FFMpeg.MEncoder.DVDAuthor.VCDImager以及MKisofs之类的软件来进行格式转换.就这点而论,它支持各种各样的主流输入视频/音

Linux 有问必答:在 Linux 上如何通过命令行来更改日期和时间

Linux 有问必答:在 Linux 上如何通过命令行来更改日期和时间 问题: 在 Linux 上, 我怎样通过命令行来改变日期和时间? 在 Linux 系统中保持日期和时间的同步是每一个 Linux 用户和系统管理员的重要责任. 很多程序都依靠精确的时间信息得以正常工作. 另外, 不精确的日期和时间会使得日志文件中的时间戳变得毫无意义, 减弱了它们在系统检查和检修中的作用. 对于生产系统来说, 精确的日期和时间甚至更为重要. 例如, 在零售公司中, 所有产品必须时刻准确地计数(并储存在数据库服

Linux有问必答——如何在Linux命令行中剪裁图像

Linux有问必答--如何在Linux命令行中剪裁图像 问题:我想要去除图像文件中的白色空白,有没有什么便捷的方法能在Linux命令行中对图像文件进行剪裁? 当涉及到在Linux中转换或编辑图像文件时,ImageMagick毫无疑问是最为熟知的一体化软件之一.它包含了一整套命令行工具,用以显示.转换,或复制超过200中类型的光栅或矢量图像文件,所有这一切都在命令行下完成.ImageMagick可以用于多样化的图像编辑工作,如转换文件格式,添加特殊效果,添加文本,以及改变图像(调整大小.旋转.翻转

Linux 有问必答:在 Linux 如何更改文本文件的字符编码

Linux 有问必答:在 Linux 如何更改文本文件的字符编码 问题:在我的 Linux 系统中有一个编码为 iso-8859-1 的字幕文件,其中部分字符无法正常显示,我想把文本改为 utf8 编码.在 Linux 中, 有没有一个好的工具来转换文本文件的字符编码? 正如我们所知道的那样,电脑只能够处理低级的二进制值,并不能直接处理字符.当一个文本文件被存储时,文件中的每一个字符都被映射成二进制值,实际存储在硬盘中的正是这些"二进制值".之后当程序打开文本文件时,所有二进制值都被读

Linux有问必答:如何检查PDF中使用了哪种字体

Linux有问必答:如何检查PDF中使用了哪种字体 问题:我想要知道PDF文件中使用了什么字体,或者嵌入了什么字体.Linux中有工具可以检查PDF文档中使用了哪种字体吗? 要检查PDF文件中包含了,或者使用了什么字体,你可以使用命令行工具:pdffonts,它是一个PDF字体分析工具.pdffonts是Poppler PDF工具集包中的一个部分. 安装PDF工具集到Linux 要安装Poppler到Debian,Ubuntu或Linux Mint: $ sudo apt-get install

Linux有问必答:如何在Linux上检查SSH的版本

Linux有问必答:如何在Linux上检查SSH的版本 Question:我想到SSH存在1和2两个版本(SSH1和SSH2).这两者之间有什么不同?还有我该怎么在Linux上检查SSH协议的版本? 安全Shell(SSH)通过加密的安全通信通道来远程登录或者远程执行命令.SSH被设计来替代不安全的明文协议,如telnet.rsh和rlogin.SSH提供了大量需要的特性,如认证.加密.数据完整性.授权和转发/通道. SSH1 vs. SSH2 SSH协议规范存在一些小版本的差异,但是有两个主要

Linux有问必答:如何检查Linux系统的最后重启时间

Linux有问必答:如何检查Linux系统的最后重启时间 问题: 是否有一个命令可以快速地检查系统已经运行了多久? 也就是我怎么知道Linux系统最后的重启时间? 有许多方法来查询系统最后的重启时间. 方法一 第一种方法是使用last命令. $ last reboot 这条命令实际上显示的是最近几天的系统运行时间.last原本被设计来显示某个特定用户的登录历史.在Linux中,有一个特别的"伪用户"称为reboot会在系统重启的时候立即自动登录.这样通过检查reboot用户的登录历史,