linux free命令
free观察内存使用情况。
free命令常用格式如下:
[root@initroot ~]# free [-b|-k|-m|-g|-h] [-t] [-s N -c N]选项与参数:
-b :free默认显示的单位是Kbytes,我们可以使用b(bytes)、m(Mbytes)、k(Kbytes)以及g(Gbytes)来指定显示单位!也可以直接让系统自己指定单位(-h);显示目前系统的内存容量:
-t :显示物理内存与swap的总量;
-s :每几秒钟输出一次!方便实时观察数据变化;
-c :输出指定的次数,与-s一起使用
[root@initroot ~]# free -m total used free shared buff/cache available Mem: 4952 2715 344 353 1892 1650 Swap: 2047 94 1953-m指定以MBytes为单位显示内存信息。从上面的输出可以看出系统中有4952MB左右的物理内存,交换内存swap有2GB左右。
Mem行显示的是物理内存的量, Swap则是内存交换空间的容量。 total是总量, used是已被使用的量, free则是剩余可用的量。 后面的shared/buffers/cached 则是在已被使用的量当中,用来作为缓冲buff及cache的量,这些shared/buffers/cached的用量中, 在系统比较忙碌时, 可以被释出而继续利用!因此后面就有一个available (可用的)数值! 。
我们可以发现这部测试机根本没有什么特别的服务,但是竟然有1892MB左右的cache! Linux系统为了加速系统性能,会将最常使用到的或者是最近使用到的文件数据缓存(cache)下来, 系统要使用该文件时,就直接由内存中取出,而不需要重新读取硬盘,速度就加快了! 因此,物理内存被用光是正常的!因为在测试过程中还是有读/写/执行很多的文件嘛!这些文件就会被系统暂时cache下来,等待下次运作时可以更快速的取出! 也就是说,系统是很有效率的将所有的内存用光,目的是为了让系统的存取效能加速啦!
需要特别关注的是swap容量。一般来说, swap最好不要被使用,系统使用到swap, 绝对是因为物理内存不足才会占用swap。 swap使用率最好不要超过20%, 如果swap的用量超过20% ,就要考虑增加物理内存了!
free命令用于查看内存的使用情况。可以显示系统中物理内存和交换内存的总量,还可以显示内核所用的buffer和caches总量。 在我的系统中运行linux命令,显示结果在下面图中所示:
peter@peter-VirtualBox:~$ free total used free shared buff/cache available Mem: 6103580 2406632 1642964 257012 2053984 3277328 Swap: 2097148 0 2097148
其中第一行显示系统物理内存的使用情况,
第二行显示的是swap交换内存的使用情况。
total列表示系统中内存的总量,
used列表示已用内存总量,该列的值可通过如下公式获得:used = total - free - buffers - cache;
free列表示空闲内存容量,
shared为共享内存使用的容量,
buff/cache为buffers和cache所用总量的总和,其中buffers为内核缓冲区所用的内存,cache为页缓存和slabs所用的内存容量。
available列为估算的在不需要swapping内存的情况下,可用物理内存容量。
free默认的显示单位是Kbytes,可以用-b(bytes), -m(Mbytes),-k(Kbytes)或者-g(Gbytes)来指定要显示的单位。实际中更常用的是使用-h来显示易于阅读的输出。
在我的系统中运行free -h命令,显示结果如下所示:
peter@peter-VirtualBox:~$ free -h total used free shared buff/cache available Mem: 5.8G 2.3G 1.5G 256M 2.0G 3.1G Swap: 2.0G 0B 2.0G
需要注意的是swap的使用量。一般来说, swap的used最好是0,最多不要超过20%。 如果您发现swap的使用量超过20% ,那么说明系统的物理内存已经严重不足了。 更多关于free的用法可以通过free -help命令查看或者man free查看更加详细的信息。
第二种查看linux内存使用情况的方法是使用top命令,top输出的第三行和第四行显示当前系统物理内存和交换内存的使用情况,
top命令还可以查看每个进程的内存使用率,在我的系统中运行top命令的显示结果如下所示:
peter@peter-VirtualBox:~$ top top - 13:30:08 up 2 days, 20:19, 1 user, load average: 1.48, 1.29, 1.01 Tasks: 248 total, 1 running, 200 sleeping, 0 stopped, 2 zombie %Cpu(s): 35.0 us, 3.9 sy, 0.0 ni, 60.4 id, 0.7 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 8167612 total, 737500 free, 3952744 used, 3477368 buff/cache KiB Swap: 2097148 total, 1377488 free, 719660 used. 3482276 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2553 peter 20 0 4280732 291072 121280 S 126.9 3.6 592:24.96 cinnamon 2989 peter 20 0 23.314g 576656 67436 S 15.6 7.1 539:55.07 code 1884 root 20 0 1417644 374688 155184 S 9.3 4.6 84:35.57 Xorg 2965 peter 20 0 456572 52056 44784 S 3.7 0.6 69:33.87 code 6151 peter 20 0 647860 25100 10812 S 2.0 0.3 1:38.91 gnome-terminal- 3241 peter 20 0 3840648 398392 153052 S 1.3 4.9 214:41.55 firefox 3322 peter 20 0 15.405g 400772 98628 S 1.0 4.9 72:09.03 Web Content 3643 peter 20 0 2978200 228248 123628 S 1.0 2.8 37:37.78 Web Content 5450 peter 20 0 43668 3992 3348 R 1.0 0.0 0:00.10 top 8719 peter 20 0 3291520 291380 76712 S 1.0 3.6 61:19.30 Web Content
free和top命令显示的内存信息都是通过读取/proc/meminfo文件生成的,所以我们也可以通过查看/proc/meminfo文件来查看系统的内存使用情况
以上介绍的方法都是在命令行环境下查看,也可以通过图形界面查看系统的内存使用情况,图形界面查看内存使用情况比较常用的工具是System Monitor。
还有一些命令也可以显示内存的使用情况,比如ps、vmstat、memstat等。但这不是这些工具的主要作用。这里不做详细阐述
本文由initroot编辑整理,转载请注明www.initroot.com
我们在用ps或者top查看系统进程的时候,就已经涉及到很多系统资源信息了。 除了进程管理相关命令外,我们还可以通过其他工具查看系统中的资源使用情况!