【51CTO.com快译】几个命令可报告Linux系统上安装和使用了多少内存。你可能淹没于细节,也可能获得快速简易的答案,这看你使用哪个命令。

有好多方法可以获取Linux系统上已安装内存方面的信息,并查看使用了其中多少内存。一些命令提供了大量细节,另一些命令提供了简洁但不一定易于理解的答案。本文介绍几个用于检查内存及使用情况的实用工具。

不过在探讨细节之前,先看几个基础知识。物理内存和虚拟内存不一样。后者包括配置成用作交换区(swap)的磁盘空间。交换区可能包括为此用途留出的分区,或者创建新分区不切实际时为添加到可用交换区而创建的文件。一些Linux命令提供了两方面的信息。

交换区扩展内存的办法就是提供这样的磁盘空间:可用于容纳物理内存填满时移到磁盘的非活动页面。

内存管理中起到作用的一个文件是/ proc / kcore。该文件看起来像普通文件(不过极庞大),但它根本不占用磁盘空间。相反,它是个虚拟文件,就像/proc中的所有文件。

$ ls -l /proc/kcore

-r--------. 1 root root 140737477881856 Jan 28 12:59 /proc/kcore

颇有意思的是,下面查询的两个系统安装的内存量不一样,不过两者上面的/proc/kcore大小却一样。这两个系统中的一个安装了4 GB内存,第二个安装了6 GB。

system1$ ls -l /proc/kcore

-r--------. 1 root root 140737477881856 Jan 28 12:59 /proc/kcore

system2$ ls -l /proc/kcore

-r-------- 1 root root 140737477881856 Feb 5 13:00 /proc/kcore

声称此文件大小代表可用虚拟内存量(可能加上4K)的解释并不重要。这个数字表明这些系统上的虚拟内存是128太字节!这个数字似乎代表64位系统能够寻址多少内存,而不是系统上有多少可用内存。在命令行上计算128 TB和那个数字加上4K看起来很容易:

$ expr 1024 \* 1024 \* 1024 \* 1024 \* 128

140737488355328

$ expr 1024 \* 1024 \* 1024 \* 1024 \* 128 + 4096

140737488359424

检查内容的另一个更方便的命令是free命令。它显示了一目了然的内存报告。

$free

total used freeshared buff/cache available

Mem: 6102476 812244 4090752 13112 1199480 4984140

Swap: 2097148 0 2097148

若使用-g选项,free可报告以GB为单位的值。

$free-g

total used freeshared buff/cache available

Mem: 5 0 3 0 1 4

Swap: 1 0 1

若使用-t选项,free显示了与不用选项同样的值,但在输出底部添加了合计行。

$free-t

total used freeshared buff/cache available

Mem: 6102476 812408 4090612 13112 1199456 4983984

Swap: 2097148   0 2097148

Total: 8199624 812408 6187760

当然,你可以选择两个选项都用。

$free-tg

total used freeshared buff/cache available

Mem: 5 0 3 0 1 4

Swap: 1 0 1

Total: 7 0 5

如果你试图回答“该系统上安装了多少内存?”这个问题,可能很失望。这是上一个例子中显示的同一个系统,显示拥有6GB内存。这并不意味着该报告是错误的,而是说显示了系统拥有的可用内存。

free命令还提供了每隔X秒(下面例子中是10秒)更新显示内容的选项。

$free-s 10

total used freeshared buff/cache available

Mem: 6102476 812280 4090704 13112 1199492 4984108

Swap: 2097148 0 2097148

total used freeshared buff/cache available

Mem: 6102476 812260 4090712 13112 1199504 4984120

Swap: 2097148 0 2097148

若使用-l,free命令提供高端内存和低端内存的使用情况。

$free-l

total used freeshared buff/cache available

Mem: 6102476 812376 4090588 13112 1199512 4984000

Low:   6102476 2011888 4090588

High: 0 0 0

Swap: 2097148 0 2097148

查看内存的另一个选项是/proc/meminfo文件。与/proc/kcore一样,这是个虚拟文件,给出了实用报告,显示安装了多少内存、多少是闲置和可用内存。很显然,闲置和可用并不是一回事。MemFree似乎代表未使用的内存。MemAvailable估计了多少内存可用来启动新的应用程序。

$ head -3 /proc/meminfo

MemTotal: 6102476 kB

MemFree: 4090596 kB

MemAvailable: 4984040 kB

如果你只想查看总内存,可以使用这其中一个命令:

$ awk'/MemTotal/ {print $2}'/proc/meminfo

6102476

$ grep MemTotal /proc/meminfo

MemTotal: 6102476 kB

DirectMap条目将内存信息分解成几个类别。

$ grep DirectMap /proc/meminfo

DirectMap4k: 213568 kB

DirectMap2M: 6076416 kB

DirectMap4k代表映射到标准4K页面的内存量,而DirectMap2M显示了映射到2MB页面的内存量。

getconf命令会提供更丰富一点的信息。

$ getconf -a | more

LINK_MAX   65000

_POSIX_LINK_MAX 65000

MAX_CANON 255

_POSIX_MAX_CANON 255

MAX_INPUT 255

_POSIX_MAX_INPUT 255

NAME_MAX 255

_POSIX_NAME_MAX 255

PATH_MAX 4096

_POSIX_PATH_MAX 4096

PIPE_BUF 4096

_POSIX_PIPE_BUF 4096

SOCK_MAXBUF

_POSIX_ASYNC_IO

_POSIX_CHOWN_RESTRICTED 1

_POSIX_NO_TRUNC 1

_POSIX_PRIO_IO

_POSIX_SYNC_IO

_POSIX_VDISABLE 0

ARG_MAX 2097152

ATEXIT_MAX 2147483647

CHAR_BIT 8

CHAR_MAX 127

--More--

使用如下所示的命令,将该输出简化成特定的内容,你会得到上述一些命令提供的同一种信息。

$ getconf -a | grep PAGES | awk'BEGIN {total = 1} {if (NR == 1 || NR == 3) total *=$NF} END {print total / 1024" kB"}'

6102476 kB

该命令乘以输出中的第一行和最后一行,以此计算内存,就像这样:

PAGESIZE 4096 <==

_AVPHYS_PAGES 1022511

_PHYS_PAGES 1525619 <==

单独计算,我们可以看到该值是如何得出的。

$ expr 4096 \* 1525619 / 1024

6102476

很显然这是理应转变成化名的命令之一。

输出非常一目了然的另一个命令是top。在top输出的头五行,会看到显示内存在如何使用的几个数字。

$top

top- 15:36:38 up 8 days, 2:37, 2 users,loadaverage: 0.00, 0.00, 0.00

Tasks: 266 total, 1 running, 265 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

MiB Mem : 3244.8 total, 377.9 free, 1826.2 used, 1040.7 buff/cache

MiB Swap: 3536.0 total, 3535.7 free, 0.3 used. 1126.1 avail Mem

最后这个命令可简明扼要地回答“那么,该系统上安装了多少内存?”这个问题:

$ sudo dmidecode -t 17 | grep"Size.*MB"| awk'{s+=$2} END {print s / 1024 "GB"}'

6GB

Linux系统提供了许多选项,用于查看系统上安装了多少内存、已使用内存和可用内存有多少,这取决于你想看到多具体的细节。

原文标题:How much memory is installed and being used on your Linux systems?,作者:Sandra Henry-Stocker

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

linux安装文件多大空间,你的Linux系统上安装了多少内存?又使用了多少?相关推荐

  1. linux中wine yum安装,分享|在基于RedHat或Debian的系统上安装 Wine 1.7

    Wine,Linux上最流行也是最有力的软件, 可以顺利地在Linux平台上运行Windows程序和游戏. 这篇文章教你怎么在像CentOS, Fedora, Ubuntu, Linux Mint一样 ...

  2. linux没有浏览器如何卸载,在Ubuntu 20.04系统上安装及卸载Tor浏览器的方法

    本文介绍如何在Ubuntu 20.04系统上安装To浏览器,相同的说明适用于任何其他基于Debian的发行版. 安装Tor浏览器 在Ubuntu 20.04上安装Tor浏览器的最简单方法是使用Tor浏 ...

  3. ubuntu 安装kde桌面_在Ubuntu 20.04系统上安装KDE Plasma Desktop的方法

    本文介绍在Ubuntu 20.04系统上安装KDE Plasma Desktop的方法.Plasma Desktop是KDE创建的一种流行且功能强大的桌面环境,主要用于Linux系统.KDE Plas ...

  4. anydesk linux安装_在Debian 10/Ubuntu 18.04系统上安装AnyDesk的方法

    本文介绍在Debian 10(Buster) Linux/Ubuntu 18.04(Bionic Beaver)操作系统上安装AnyDesk的方法. 简介 AnyDesk是Windows.Linux和 ...

  5. ubuntu java8 java9_在Ubuntu/Debian系统上安装Java 9的方法

    本文介绍在Ubuntu/Debian系统上安装Oracle Java 9的方法:使用webupd8team/java PPA,相同的PPA提供了Java 8和Java 7等旧版Java的软件包,如果你 ...

  6. linux删除文件未释放空间问题处理

    linux删除文件未释放空间问题处理 或者 /根分区满了 (我的根分区是/dev/sda1,/dev/sda1满了) http://blog.csdn.net/donghustone/article/ ...

  7. 绝对精华,大牛教你在Android系统上安装linux发行版

    Install linux distribution (Debian/Ubuntu/Kali Linux/Fedora/openSUSE/Gentoo/RootFS/Arch Linux) on An ...

  8. 安卓设备刷linux发行版,绝对精华,大牛教你在Android系统上安装linux发行版

    Install linux distribution (Debian/Ubuntu/Kali Linux/Fedora/openSUSE/Gentoo/RootFS/Arch Linux) on An ...

  9. Redis进阶实践之二如何在Linux系统上安装安装Redis

    2019独角兽企业重金招聘Python工程师标准>>> Redis进阶实践之二如何在Linux系统上安装安装Redis 一.引言 上一篇文章写了"如何安装VMware Pr ...

最新文章

  1. python操作redis--------------数据库增删改查
  2. flask mysql 版本_Flask mysql
  3. 单片机shell命令_MCU调试大法:使用串口实现简单shell功能
  4. aws python lambda_python – AWS Lambda发送HTTP请求
  5. Linux下shell命令——处理目录的常用命令
  6. CAD梦想画图中的“离散曲线命令”
  7. OEM、ODM 、OBM分别是什么意思?
  8. Idea内网配置仓库地址
  9. angr符号执行用例解析——0ctf_momo_3
  10. 快门光圈感光度口诀_摄影:一张图让你明白什么叫光圈、快门、感光度、景深、ISO。...
  11. TCP-IP计算机网络基本概述
  12. QScrollArea 动态添加控件问题
  13. ③电子产品拆解分析-充电宝台灯
  14. USB billboard
  15. Oracle的常见错误及解决办法
  16. unity文本隐藏_AI论文中隐藏的笑话,全看懂的绝对是高手!
  17. kube-proxy模式之iptables
  18. python股票分布图_Python股票成交价格分布图(二)
  19. 自学3D游戏建模,90%的人都过不了这一关
  20. 前端leaflet框选下载bing遥感图

热门文章

  1. 阿里云物联网平台设备模拟器
  2. linux命令:head、tail
  3. ISO15189医学实验室认可内审员培训
  4. 巴基斯坦大学计算机专业,巴基斯坦的大学有哪些?
  5. 手机(小米10s)接收微信语音\视频通话时,蓝牙耳机(小米Air2s)无法使用,手机仍外放
  6. 中国当代青年十大错觉
  7. jQuery过滤选择器层次选择器表单选择器
  8. 平面设计好看的英文字体下载_平面设计的40种免费字体
  9. 石化人员定位方案:uBeacon+ibeacon融合定位特点
  10. 手机电子名片html,个人简历/电子名片 HTML模板