【.com速译】几个命令报告Linux系统上安装和使用了多少内存。根据您使用的命令,您可能会被细节淹没或获得快速简单的答案。有许多方法可以获取有关Linux系统上已安装内存的信息并查看其中的使用量。一些命令提供了很多细节,另一些命令提供了简洁但不一定易于理解的答案。本文介绍了几种用于检查内存和使用情况的有用工具。但在深入细节之前,让我们先了解一些基础知识。物理内存不同于虚拟内存。后者包括配置为用作交换的磁盘空间。交换可能包括为此目的预留的分区,或者如果创建新分区不切实际而创建的用于添加到可用交换的文件。一些Linux命令提供双方的信息。交换区扩展内存的方式是提供磁盘空间,可用于容纳物理内存填满时移动到磁盘的非活动页面。/proc/kcore是一个在内存管理中起作用的文件。这个文件看起来像一个普通文件(但非常大),但它根本不占用磁盘空间。相反,它是一个虚拟文件,就像/proc中的所有文件一样。$ls-l/proc/kcore-r--------.1rootroot140737477881856Jan2812:59/proc/kcore有意思的是,下面查询到的两个系统安装的内存大小是不一样的,但是/proc/kcore的大小是一样的。两个系统之一安装了4GBRAM,第二个系统安装了6GB。system1$ls-l/proc/kcore-r--------.1rootroot140737477881856Jan2812:59/proc/kcoresystem2$ls-l/proc/kcore-r--------1rootroot140737477881856Feb513:00/proc/kcore声称此文件大小表示可用虚拟内存量(可能加上4K)的解释并不重要。这个数字表明这些系统上的虚拟内存是128TB!这个数字似乎代表了64位系统能够寻址的内存量,而不是系统上可用的内存量。计算128TB并将4K添加到该数字在命令行上看起来很容易:$expr1024\*1024\*1024\*1024\*128140737488355328$expr1024\*1024\*1024\*1024\*128+4096140737488359424检查内容更方便的命令是free命令。它一目了然地显示内存报告。$freetotalusedfreesharedbuff/cacheavailableMem:610247681224440907521311211994804984140Swap:209714802097148如果使用了-g选项,free可以报告以GB为单位的值。$free-gtotalusedfreesharedbuff/cacheavailableMem:503014Swap:101带-t选项,free显示和不带该选项一样的值,只是在输出的底部加了一行总计。$free-ttotalusedfreesharedbuff/cacheavailableMem:610247681240840906121311211994564983984Swap:2097148 02097148Total:81996248124086187760当然,你可以选择同时使用这两个选项。$free-tgtotalusedfreesharedbuff/cacheavailableMem:503014Swap:101Total:705如果您要回答“此系统上安装了多少内存?”这个问题,您可能会感到失望。这与上一个示例中显示的系统相同,显示有6GBRAM。这并不意味着报告有误,但它显示了系统有多少空闲内存。free命令还提供了一个选项,可以每X秒更新一次显示(下例中为10秒)。$free-s10totalusedfreesharedbuff/cacheavailableMem:610247681228040907041311211994924984108Swap:209714802097148totalusedfreesharedbuff/cacheavailableMem:610247681226040907121311211995044984120Swap:209714802097148若使用-l,free命令提供高端内存和低端内存的使用情况。$free-ltotalusedfreesharedbuff/cacheavailableMem:610247681237640905881311211995124984000Low: 610247620118884090588High:000Swap:209714802097148查看内存的另一个选项是/meminfo/file。与/proc/kcore一样,这是一个虚拟文件,它提供有用的报告,显示安装了多少内存、空闲了多少以及可用内存有多少。显然空闲和可用不是一回事。MemFree似乎代表未使用的内存。MemAvailable估计有多少内存可用于启动新应用程序。$head-3/proc/meminfoMemTotal:6102476kBMemFree:4090596kBMemAvailable:4984040kB如果你只想查看总内存,可以使用以下命令之一:$awk'/MemTotal/{print$2}'/proc/meminfo6102476$grepMemTotal/proc/meminfoMemTotal:6102476kBDirectMap条目将内存信息分为几类。$grepDirectMap/proc/meminfoDirectMap4k:213568kBDirectMap2M:6076416kBDirectMap4k表示映射到标准4K页面的内存量,而DirectMap2M显示映射到2MB页面的内存量。getconf命令将提供更多信息。$getconf-a|moreLINK_MAX 65000_POSIX_LINK_MAX65000MAX_CANON255_POSIX_MAX_CANON255MAX_INPUT255_POSIX_MAX_INPUT255NAME_MAX255_POSIX_NAME_MAX255PATH_MAX4096_POSIX_PATH_MAX4096PIPE_BUF4096_POSIX_PIPE_BUF4096SOCK_MAXBUF_POSIX_ASYNC_IO_POSIX_CHOWN_RESTRICTED1_POSIX_NO_TRUNC1_POSIX_PRIO_IO_POSIX_SYNC_IO_POSIX_VDISABLE0ARG_MAX2097152ATEXIT_MAX2147483647CHAR_BIT8CHAR_MAX127--More--使用如下所示的命令,将该输出简化成特定的内容,你会得到上述一些命令提供的同一种信息。$getconf-a|grepPAGES|awk'BEGIN{total=1}{if(NR==1||NR==3)total*=$NF}END{printtotal/1024"kB"}'6102476kBThiscommandismultipliedbyThefirstandlastlineintheoutput,fromwhichmemoryiscalculated,islikethis:PAGESIZE4096<==_AVPHYS_PAGES1022511_PHYS_PAGES1525619<==Calculatedseparately,wecanseehowthisvalueisderived.$expr4096\*1525619/10246102476Obviouslythisisoneofthecommandsthatshouldbetransformedintoanalias.Anothercommandwhoseoutputisveryself-explanatoryistop.Inthefirstfivelinesoftop'soutput,you'llseeafewnumbersshowinghowmemoryisbeingused.$toptop-15:36:38up8days,2:37,2users,loadaverage:0.00,0.00,0.00Tasks:266total,1running,265sleeping,0stopped,0zombie%Cpu(s):0.2us,0.4sy,0.0ni,99.4id,0.0wa,0.0hi,0.0si,0.0stMiBMem:3244.8total,377.9free,1826.2used,1040.7buff/cacheMiBSwap:3536.0total,3535.7free,0.3used.1126.1availMem这最后一个命令可以简洁地回答“所以,如何系统上安装了多少内存?”本题:$sudodmidecode-t17|grep"Size.*MB"|awk'{s+=$2}END{prints/1024"GB"}'6GBLinux系统提供了很多选项,用于查看安装、使用和可用的内存量在您的系统上,取决于您希望看到它的具体程度。原标题:HowmuchmemoryisinstalledandbeingusedonyourLinuxsystems?,作者:SandraHenry-Stocker
