free命令常用参数详解
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
在运维期间我们会经常去查看服务器硬件信息,比如说内存,大家可能知道看内存用“[root@yinzhengjie ~]# cat /proc/meminfo”,看cpu信息就用"[root@yinzhengjie ~]# cat /proc/cpuinfo",甚至用top命令也能看到相关的信息,不过在linux系统中有专门查看内存的命令哟,他是我们今天的主角。让我们一起来学习一下吧。
一.语法格式: free [-b | -k | -m] [-o] [-s delay ] [-t] [-l] [-V]
1."-b"参数:以字节为单位显示内存使用情况。
1 [root@yinzhengjie ~]# free -b 2 total used free shared buffers cached 3 Mem: 8237436928 8098242560 139194368 0 159383552 6659211264 4 -/+ buffers/cache: 1279647744 6957789184 5 Swap: 8371822592 61120512 8310702080 6 [root@yinzhengjie ~]#
2."-k"参数:以“kb”为单位显示内存使用情况。(默认不加参数的话,直接在命令行中敲击“free”,就会默认打印-k的参数。)
1 [root@yinzhengjie ~]# free -k 2 total used free shared buffers cached 3 Mem: 8044372 7907804 136568 0 155648 6503448 4 -/+ buffers/cache: 1248708 6795664 5 Swap: 8175608 59688 8115920 6 [root@yinzhengjie ~]#
3.“-m”参数:以“mb”为单位显示内存使用情况。
1 [root@yinzhengjie ~]# free -m 2 total used free shared buffers cached 3 Mem: 7855 7722 132 0 152 6351 4 -/+ buffers/cache: 1219 6636 5 Swap: 7983 58 7925 6 [root@yinzhengjie ~]#
4.“-s”参数:后面需要跟个数字,单位是"s",显示每隔多少秒数来显示一次内存使用情况。
1 [root@yinzhengjie ~]# free -m -s 1 2 total used free shared buffers cached 3 Mem: 7855 7723 132 0 152 6351 4 -/+ buffers/cache: 1219 6636 5 Swap: 7983 58 7925 6 7 total used free shared buffers cached 8 Mem: 7855 7723 132 0 152 6351 9 -/+ buffers/cache: 1219 6636 10 Swap: 7983 58 7925 11 12 total used free shared buffers cached 13 Mem: 7855 7723 132 0 152 6351 14 -/+ buffers/cache: 1219 6636 15 Swap: 7983 58 7925 16 17 total used free shared buffers cached 18 Mem: 7855 7723 132 0 152 6351 19 -/+ buffers/cache: 1219 6636 20 Swap: 7983 58 7925 21 22 total used free shared buffers cached 23 Mem: 7855 7722 132 0 152 6351 24 -/+ buffers/cache: 1219 6636 25 Swap: 7983 58 7925 26 27 total used free shared buffers cached 28 Mem: 7855 7722 132 0 152 6351 29 -/+ buffers/cache: 1219 6636 30 Swap: 7983 58 7925 31 32 total used free shared buffers cached 33 Mem: 7855 7722 132 0 152 6351 34 -/+ buffers/cache: 1219 6636 35 Swap: 7983 58 7925 36 37 total used free shared buffers cached 38 Mem: 7855 7723 132 0 152 6351 39 -/+ buffers/cache: 1219 6636 40 Swap: 7983 58 7925 41 42 total used free shared buffers cached 43 Mem: 7855 7723 132 0 152 6351 44 -/+ buffers/cache: 1219 6636 45 Swap: 7983 58 7925 46 47 total used free shared buffers cached 48 Mem: 7855 7723 132 0 152 6351 49 -/+ buffers/cache: 1219 6635 50 Swap: 7983 58 7925 51 52 total used free shared buffers cached 53 Mem: 7855 7723 132 0 152 6351 54 -/+ buffers/cache: 1219 6635 55 Swap: 7983 58 7925 56 57 total used free shared buffers cached 58 Mem: 7855 7723 132 0 152 6351 59 -/+ buffers/cache: 1219 6636 60 Swap: 7983 58 7925 61 62 ^C 63 [root@yinzhengjie ~]#
5.“-t”参数:在末尾活多出一行“Total”,表示显示总和列
1 [root@yinzhengjie ~]# free -t -m -s 1 2 total used free shared buffers cached 3 Mem: 7855 7724 131 0 152 6352 4 -/+ buffers/cache: 1220 6635 5 Swap: 7983 58 7925 6 Total: 15839 7782 8057 7 8 total used free shared buffers cached 9 Mem: 7855 7724 131 0 152 6352 10 -/+ buffers/cache: 1220 6635 11 Swap: 7983 58 7925 12 Total: 15839 7782 8057 13 14 total used free shared buffers cached 15 Mem: 7855 7724 131 0 152 6352 16 -/+ buffers/cache: 1220 6635 17 Swap: 7983 58 7925 18 Total: 15839 7782 8057 19 20 total used free shared buffers cached 21 Mem: 7855 7724 131 0 152 6352 22 -/+ buffers/cache: 1220 6635 23 Swap: 7983 58 7925 24 Total: 15839 7782 8057 25 26 ^C 27 [root@yinzhengjie ~]#
6.“-o”参数:不显示包含“-/+ buffers/cache”的这一列,即不显示缓冲区调节列。
1 [root@yinzhengjie ~]# free -t -o -m -s 1 2 total used free shared buffers cached 3 Mem: 7855 7724 131 0 152 6352 4 Swap: 7983 58 7925 5 Total: 15839 7782 8057 6 7 total used free shared buffers cached 8 Mem: 7855 7724 131 0 152 6352 9 Swap: 7983 58 7925 10 Total: 15839 7782 8056 11 12 total used free shared buffers cached 13 Mem: 7855 7724 131 0 152 6352 14 Swap: 7983 58 7925 15 Total: 15839 7782 8056 16 17 total used free shared buffers cached 18 Mem: 7855 7724 131 0 152 6352 19 Swap: 7983 58 7925 20 Total: 15839 7782 8056 21 22 total used free shared buffers cached 23 Mem: 7855 7724 131 0 152 6352 24 Swap: 7983 58 7925 25 Total: 15839 7782 8057 26 27 ^C 28 [root@yinzhengjie ~]#
二.如何去看输出的结果
我上面举了那么多例子,我生活中最常用的就是:“free -m”,那么我们如何看这个输出的结果呢?
1 2 3 4 5 6 7 8 2 total used free shared buffers cached #第一行 3 Mem: 7855 7718 137 0 152 6348 #第二行 4 -/+ buffers/cache: 1218 6637 #第三行 5 Swap: 7983 58 7925 #第四行 我们知道这个是"free -m"的输出结果,我只不过是将结果取出来了,然后进行标号,用坐标的方式来讲解如何查看内容: 第一行: total(2,3):总计物理内存的大小。 used(2,4):已使用的空间。 free(2,5):可用的空间。 shared(2,6):多个进程共享的内存总额。现在已经deprecated,其值总是0(当然在一些系统上也可能不是0,主要取决于free命令是怎么实现的)。 buffers(2,7):用于存放要输出到disk(块设备)的数据的,[A buffer is something that has yet to be "written" to disk. ]即提高了内存网硬盘加速写的能力 cached(2,8):存放从disk上读出的数据,['A cache is something that has been "read" from the disk and stored for later use.'] (cached往往比buffers数字大就是为了提高IO read的性能)即提高了加速读的能力 第二行:(输出时从操作系统(OS)来看的) 看了第一行的解释,我能知道了第一行输出时从操作系统(OS)来看的。也就是说,从OS的角度来看 (3.3):即7855MB物理内存; (3,4):7718MB已经被使用了; (3,5):137MB可用被使用。 因此,我们可以得到一个公式哟:(3.3)= (3,4)+ (3,5) 第三行:(是从一个应用程序的角度看系统内存的使用情况) (4,4,):即-buffers/cache,表示一个应用程序认为系统被用掉多少内存; (4,5):即+buffers/cache,表示一个应用程序认为系统还有多少内存; 因此我们又可以得到2个公式哟: 1>.(4,4) = (3,4) - (3,7) - (3,8) 2>.(4,5) = (3,5) + (3,7) - (3,8) 第四行: free的输出一共有四行,第四行为交换区的信息,分别是交换的总量(total),使用量(used)和有多少空闲的交换区(free) ''' 提示: free命令由procps.*.rpm提供(在Redhat系列的OS上)。free命令的所有输出值都是从/proc/meminfo中读出的。“-/+ buffers/cache”其对应的used表示实际使用内存,对应的free对应的才是实际空闲的内存。 '''