Linux操作系统包含大量工具,所有这些工具都可以帮助您管理系统。从简单的文件和目录工具到非常复杂的安全命令,在Linux上没有太多不能做的事情。而且,虽然普通桌面用户可能不需要在命令行熟悉这些工具,但他们对于Linux管理员来说是强制性的。为什么?首先,你需要在某个时候使用无GUI的Linux服务器。其次,命令行工具通常比其替代方案提供更多的功能和灵活性。

  确定内存使用率是一项技能,您可能需要一个特定的应用程序和系统内存。发生这种情况时,知道您有多种工具可以帮助您排除故障,这很方便。或者,也许您需要收集有关Linux交换分区的信息或有关您安装的RAM的详细信息?还有一些命令。让我们深入了解各种Linux命令行工具,以帮助您检查系统内存使用情况。这些工具并非难以使用,在本文中,我会向您展示五种解决问题的方法。

  我将在UbuntuServer18.04平台上进行演示。但是,您应该在您选择的发行版中找到所有这些命令。更好的是,你不需要安装一件东西(因为大多数这些工具都包含在内)。

  我想用最明显的工具开始。命令提供了一个正在运行的系统的一个动态的,实时的图。包含在该系统摘要中的是能够按照每个进程检查内存使用情况。这非常重要,因为您可以轻松地对同一命令进行多次迭代,消耗不同数量的内存。虽然你不会在服务器上找到它,但是说你已经打开了Chrome并注意到你的系统变慢了。发出顶级命令以查看Chrome有多个进程正在运行(每个选项卡一个-图1)。

  图1:出现在顶部命令中的Chrome的多个实例。

Chrome并不是唯一显示多个进程的应用程序。你看到图1中的Firefox条目?这是Firefox的主要流程,而WebContent流程是开放的标签。在输出的顶部,您会看到系统统计信息。在我的机器上,我总共有16GB可用RAM,其中刚刚超过10GB。然后,您可以梳理整个列表并查看每个进程正在使用的内存百分比。

  其中一件事顶部是被发现,可能已经失去控制服务的进程ID(PID)号码非常好。使用这些PID,您可以设置故障排除(或杀死)违规任务。

  如果你想让top变得更友善一些,请发出命令top-o%MEM,这会导致top按所用内存对所有进程进行排序(图2)。

  图2:顶部使用的内存排序过程。

  该顶部命令也给你多少你的交换空间正在使用的实时更新。

  然而,有时候,顶端可能会满足您的需求。您可能只需查看系统上可用和已用内存的数量。为此,有免费的命令。自由命令显示:

  可用和已用物理内存总量

  系统中交换内存的总量

  内核使用的缓冲区和缓存

  在终端窗口中,免费发布命令。该命令的输出不是实时的。相反,您将获得的是当时免费和已用内存的即时快照(图3)。

  图3:free命令的输出简单明了。

  当然,您可以通过添加-m选项来免费更方便用户,如下所示:free-m。这将以MB为单位报告内存使用情况(图4)。

  图4:以更易读的形式输出free命令。

  当然,如果你的系统甚至是远程现代的,你可能想要使用-g选项(千兆字节),就像free-g一样。

  如果你需要内存总数,你可以像这样添加t选项:free-mt。这将简单地总计列中的内存量(图5)。

  图5:为您提供免费的总内存列。

  另一个非常方便的工具是vmstat。这个特殊的命令是报告虚拟内存统计信息的一招小马。该vmstat的命令将在报告统计:

  流程

  记忆

  分页

  块IO

  陷阱

  磁盘

  中央处理器

  发出vmstat的最好方法是使用-s开关,如vmstat-s。这将在单个列中报告您的统计信息(比默认报告更容易阅读)。该的vmstat命令会给你更多的信息比你需要(图6),但更多的是总是更好(在这种情况下)。

  图6:使用vmstat命令检查内存使用情况。

  如果你想了解有关已安装的系统RAM的详细信息,该怎么办?为此,您可以使用dmidecode命令。这个特定的工具是DMI表格解码器,它将系统的DMI表格内容转储为可读格式。如果您不确定DMI表的内容,则可以用它来描述系统的构成(以及系统可能的演变)。

  要运行dmidecode命令,您确实需要sudo权限。所以发出命令sudodmidecode-t17。命令的输出(图7)可能很长,因为它显示所有内存类型设备的信息。因此,如果您无法滚动,可能需要将该命令的输出发送到文件中,如下所示:sudodmidecode-t17>dmi_infoI,或者将其输入less命令,如sudodmidecode。

  图7:dmidecode命令的输出。

  你可能会问自己:“这些命令从哪里得到这些信息?”。在某些情况下,他们从/proc/meminfo文件中获取它。你猜怎么了?您可以使用less/proc/meminfo命令直接读取该文件。通过使用less命令,您可以通过冗长的输出上下滚动以准确找到您需要的内容(图8)。

  图8:less/proc/meminfo命令的输出。

  有一件事你应该知道/proc/meminfo:这不是一个真正的文件。相反/pro/meminfo是一个虚拟文件,其中包含有关系统的实时动态信息。特别是,您需要检查以下值:

MemTotal

MemFree

MemAvailable

  缓冲区

  缓存

SwapCached

SwapTotal

SwapFree

  如果你想使用/proc/meminfo,你可以像egrep命令一样使用它:egrep--color'Mem|Cache|Swap'/proc/meminfo。这将产生一个易于阅读的包含Mem,Cache和Swap...的所有条目的列表(图9)。

​  图9:使/proc/meminfo更易于阅读。

  保持学习,你应该做的第一件事情之一是阅读每个命令的手册页。(黑客周刊)​

Linux中检查内存使用情况的命令的更多相关文章

  1. Linux中查看系统资源占用情况的命令【转载】

      用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载 ...

  2. Linux中查看系统资源占用情况的命令

    用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况 ...

  3. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  4. [转帖]linux中systemctl详细理解及常用命令

    linux中systemctl详细理解及常用命令 2019年06月28日 16:16:52 思维的深度 阅读数 30 https://blog.csdn.net/skh2015java/article ...

  5. linux中systemctl详细理解及常用命令

    linux中systemctl详细理解及常用命令 https://blog.csdn.net/skh2015java/article/details/94012643 一.systemctl理解 Li ...

  6. 全面了解 Linux 服务器 - 2. 查看 Linux 服务器的内存使用情况

    2. 查看 Linux 服务器的内存使用情况 liuqian@ubuntu:~$ free -m total used free shared buffers cached Mem: 1983 186 ...

  7. linux中tomcat内存溢出解决办法

    用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出 ...

  8. linux中tomcat内存溢出

    刚开始测试服务器与线上后台都不能上传10分钟以上的视频,后来只要是视频就不能上传,进入服务器查日志得到如下错误: Caused by: java.lang.OutOfMemoryError: Java ...

  9. 用于监视Linux上的内存使用情况的Bash脚本

    用于监视Linux上的内存使用情况的Bash脚本 2019-06-17 11:32:45作者:戴进稿源:云网牛站 在本文中,我们添加了两个shell脚本来监视Linux操作系统上的内存利用率,即用于监 ...

随机推荐

  1. Factors and Multiples

    Factors and Multiples   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Y ...

  2. loj#2838 「JOISC 2018 Day 3」比太郎的聚会

    分析 预处理每个点的前根号小的距离 对于每次询问删除点小于根号则已经处理好 否则直接暴力dp即可 代码 #include<bits/stdc++.h> using namespace st ...

  3. 获取小程序accessToken

    private static String getAccessToken(){ String url = "https://api.weixin.qq.com/cgi-bin/token? ...

  4. 测开之路六十二:接口测试平台之公共的js、html、平台入口

    common.js //定义后台的host和端口var host = 'http://192.168.xxx.1:8000'; //'http://127.0.0.1:8000'; //用于发送htt ...

  5. 接口自动化之cookies登录

    现在有很多网站有验证码,跳过验证码实现登录可以使用cookies登录 目录 1.requests的添加cookies的方法 2.举个栗子 1.requests的添加cookies的方法 request ...

  6. 云计算openstack核心组件——keystone身份认证服务

    一.Keystone介绍:       keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户 ...

  7. JavaScript.Remove

    Array.prototype.remove = function (from, to) {     var rest = this.slice((to || from) + 1 || this.le ...

  8. CSS实现背景图片屏幕自适应

    在做登陆页面等的首页的时候,经常会遇到需要放一张背景大图的情况,并且需要图片按比例缩放,来适应不同屏幕的大小. html代码如下: <!DOCTYPE html> <html lan ...

  9. android环境问题

    1.android studio bundle和android studio ide区别 android studio bundle和android studio ide区别 准确的说是这三种: 最开 ...

  10. Using Keyboard Navigation

    http://technet.microsoft.com/en-us/library/cc939835.aspx