专栏首页ITCoder在 Linux 下如何检查内存使用率

在 Linux 下如何检查内存使用率

在排查系统问题,或者应用变慢,或者不明原因问题时,第一件事就是要检查系统的内存使用率。

本文讲解如何在 Linux 中使用不同的几个命令来检查 RAM 内存使用率。

一、free 命令

free命令是检查一个 Linux 系统中内存使用率最常用的命令。它显示关于内存总量,已经使用的内存以及空闲内存的相关信息。

通常, free 运行时加上-h选项,意味着以人类可读的格式打印输出:

free -h
              total        used        free      shared  buff/cache   available
Mem:           3936        1087         252         130        2596        2427
Swap:             0           0           0

这里是每一列的意义:

  • total - 应用可以使用的内存总数
  • used - 已经被使用的内存。 它是这样计算的: used = total - free - buffers - cache
  • free - 空闲的/未被使用的内存。
  • shared - 这一列可以被忽略。 它仅仅用于向后兼容。
  • buff/cache - 内核缓存,页面缓存和slab
  • avaiable - 可用来启动新应用的估计可用内存,不包括交换内存。

这个free命令打印关于物理内存和交换内存的信息。

二、top 命令

top是一个命令工具,它展示正在运行的进程的实时信息。它同时显示系统概要,包括内存使用率。

想要运行命令,简单输入top:

top

输出将会看起来像下面这样:

输出头部包括以下信息:系统中内存,空闲内存,被使用内存,以及交换内存。

这个%MEM一列,提供信息包括每一个运行进程中被使用的共享内存占可用物理内存的比例。

三、 /proc/meminfo

最简单的检查 RAM 内存的方式就是去显示/proc/meminfo虚拟文件。这个文件被free,top,ps以及其他系统信息命令所使用。

使用less或者cat来查看/proc/meminfo文件的内容。

cat /proc/meminfo

文件包含了一系列信息,关于系统内存和交换内存使用率:

MemTotal:        4030592 kB
MemFree:          401804 kB
MemAvailable:    2507504 kB
...

这个来自/proc/meminfo文件的信息可以被解析,并且在 shell 脚本中使用。

四、 ps_mem 脚本

ps_mem 是一个 Python 脚本,他可以报告每个程序的 RAM 使用率。它在 Python 2 和 3 中都可以使用,并且可以使用pip进行安装。

sudo pip3 install ps_mem

运行ps_mem需要管理员权限:

sudo ps_mem

输出将会以升序显示包括每一个运行程序的内存使用率:

 Private  +   Shared  =  RAM used	Program
...
 11.9 MiB +  20.2 MiB =  32.1 MiB	nginx (4)
  8.2 MiB +  42.4 MiB =  50.6 MiB	systemd-journald
 55.8 MiB + 307.2 MiB = 363.0 MiB	php-fpm7.4 (6)
233.9 MiB + 234.0 MiB = 467.9 MiB	redis-server
578.2 MiB + 578.6 MiB =   1.1 GiB	mysqld
---------------------------------
                          2.2 GiB
=================================

当你想要找到到底是哪一个程序占用你的系统内存的大部分时,这个脚本非常有用。

五、总结

我们已经向你展示一些命令,你可以使用它们来检查系统内存使用率。

原文 :https://linuxize.com/post/check-memory-linux/

版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在 Ubuntu 20.04 上添加交换空间

    本文最先发布在:https://www.itcoder.tech/posts/how-to-add-swap-space-on-ubuntu-20-04/

    雪梦科技
  • 在 Linux 上如何挂载 ISO 格式文件

    一个 ISO 文件通常是一个压缩文件,里面包含了一张 CD 或者一张 DVD 完整镜像。例如,大部分操作系统 像 Windows, Linux, 和 macOS...

    雪梦科技
  • 如何在 CentOS 7 上安装 Tensorflow

    TensorFlow是一个用于构建机器学习的免费并且开源的平台,它由 Google 开发。它被一系列组织包括 Twitter,PayPal, Intel, Le...

    雪梦科技
  • 谷歌开源手势跟踪AI,可用于移动设备

    实时手势和动作跟踪器是手语识别和手势控制系统的重要组成部分,但是它们经常因遮挡和缺乏对比模式,无法可靠或稳健地执行任务。

    AiTechYun
  • 【平台】详细总结 Hive VS 传统关系型数据库

    本文思路,看图说话,一张图,清晰总结二者区别 ? 下面对图中的各条做详细总结 1 查询语言 不做赘述 2 数据存储位置 ...

    小莹莹
  • MongoDB(3): 查询

      2、如果没有显示指定_id字段隐藏,则默认会显示,显示指定隐藏,如:find({},{"_id":0});

    py3study
  • 纯Deep Learning干货 | 快慢网络用于视频识别(文末有源码)

    这个技术是由何恺明等人提出的,主要用于视频识别的SlowFast网络,提出要分开处理空间结构和时间事件。该网络模型在视频动作分类及检测方面性能很强大,在没有使用...

    计算机视觉研究院
  • 5G时代,终端补贴的那些事儿

    今天,我们就来看看5G发展至今,各国如何玩转终端补贴?5G时代的终端补贴有哪些特点?

    灯塔大数据
  • Mongodb多键索引之数组

    最近有项目需求用到多键索引,Mongodb中字段值支持多键索引主要包括嵌套文档、数组以及数组嵌套文档.例如联系包括手机、固定电话、邮箱、微信、QQ等,对于字段值...

    徐靖
  • 图的广度优先搜索(BFS)

    把以前写过的图的广度优先搜索分享给大家(C语言版) 1 #include<stdio.h> 2 #include<stdlib.h> 3 #defi...

    lizelu

扫码关注云+社区

领取腾讯云代金券