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. Leetcode_132. Palindrome Partitioning II_[DP]

    题目链接 Given a string s, partition s such that every substring of the partition is a palindrome. Retur ...

  2. Jenkins 节点配置中没有Launch agent via Java Web Start 选项

    Jenkins节点配置的启动方式中没有Launch agent via Java Web Start,如下图 怎样能设置出来呢? 1:打开"系统管理"——"Configu ...

  3. BeautifulSoup笔记

    ## find_all的使用: 1. 在提取标签的时候,第一个参数是标签的名字.然后如果在提取标签的时候想要使用标签属性进行过滤,那么可以在这个方法中通过关键字参数的形式,将属性的名字以及对应的值传进 ...

  4. 晋江年下文爬取【xpath】

    ''' @Modify Time @Author 目标:晋江年下文 爬取6页 ------------ ------- http://www.jjwxc.net/search.php?kw=%C4%E ...

  5. python之-框架

    MVC:Model-View-Controller,中文名“模型-视图-控制器” C——Python处理URL的函数:Controller,Controller负责业务逻辑,比如检查用户名是否存在,取 ...

  6. scrapy--meta参数传递问题

    scrapy使用大坑---meta参数传递出现之重复问题 问题描述: 爬虫目标: 实现哔哩哔哩网站的视频信息爬取,只要的信息结构爬去顺序为**关键词的搜索结果,拿到第一页上某个视频的标题,url,和时 ...

  7. Java-package import关键字

    package包关键字,在java中,有包的概念,主要是用来归类 分类作用: 便于项目的开发和维护: 通过分包,可以很清晰的来管理类: 上述 一个类Animal: 在开头有个 package com. ...

  8. docker 配置sonatype/nexus3

    docker search nexusdocker pull sonatype/nexus3mkdir -p /dockermaven/nexus-datachmod -R 777 /dockerma ...

  9. Ubuntu查看端口使用情况,使用netstat命令:

    https://www.cnblogs.com/fly-book/p/9827128.html

  10. JS对象—字符串总结(创建、属性、方法)

    1.创建字符串     1.1 new String(s)         String和new一起使用,创建的是一个字符串对象,存放的是字符串s的表示.     1.2 String(s)     ...