zoukankan      html  css  js  c++  java
  • linux free命令详解

    free命令

    一 free命令可以做什么

    free 命令显示系统内存的使用情况,包括物理内存、
    交换内存(swap)和内核缓冲区内存。
    [root@db03 /scripts/day03]# free
                  total        used        free      shared  buff/cache   available
    Mem:        2028088       95848     1803360        9712      128880     1775964
    Swap:       1048572           0     1048572
    
    如果加上 -h 选项,输出的结果会友好很多:
    [root@db03 /scripts/day03]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.9G         93M        1.7G        9.5M        125M        1.7G
    Swap:          1.0G          0B        1.0G
    
    有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:
    [root@db03 /scripts/day03]# free -hs 3
                  total        used        free      shared  buff/cache   available
    Mem:           1.9G         93M        1.7G        9.5M        125M        1.7G
    Swap:          1.0G          0B        1.0G
    
                  total        used        free      shared  buff/cache   available
    Mem:           1.9G         93M        1.7G        9.5M        125M        1.7G
    Swap:          1.0G          0B        1.0G
    
    上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c。
    由于 free 命令本身比较简单,所以本文的重点会放在如何通过 free 命令了解系统当前的内存使用状况。
    
    # 释放缓存的命令
    sync      # 释放之前先把缓冲区(buff)的数据写入磁盘
    echo 3 > /proc/sys/vm/drop_caches # 释放内存
     
    drop_caches的值可以是0-3之间的数字,代表不同的含义:
    0:不释放(系统默认值)
    1:释放页缓存
    2:释放dentries和inodes
    3:释放所有缓存
    
    # 释放完内存后改回去让系统重新自动分配内存。
    echo 0 >/proc/sys/vm/drop_caches
    

    二 输出参数解释

    Mem             # 行(第二行)是内存的使用情况。
    Swap            # 行(第三行)是交换空间的使用情况。
    total           # 列显示系统总的可用物理内存和交换空间大小。
    used            # 列显示已经被使用的物理内存和交换空间。
    free            # 列显示还有多少物理内存和交换空间可用使用。 
    shared          # 列显示被共享使用的物理内存大小。
    buff/cache      # 列显示被 buffer 和 cache 使用的物理内存大小
    available       # 列显示还可以被应用程序使用的物理内存大小。
    
    

    Buffer和Cache的区别
    缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
    缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定 期清空缓冲内容(即写如磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的MP3,但U盘的 灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。

    free命令总结

    free 命令是一个既简单又复杂的命令。简单是因为这个命令的参数少,
    输出结果清晰。说它复杂则是因为它背后是比较晦涩的操作系统中的概念,
    如果不清楚这些概念,即便看了 free 命令的输出也 get 不到多少有价值的信息。
    
  • 相关阅读:
    HDU 2895 编辑距离
    AC自动机
    HDU 1707 简单模拟 Spring-outing Decision
    HDU 1710 二叉树的遍历 Binary Tree Traversals
    Codeforces Round #521 (Div. 3) E. Thematic Contests
    Codeforces Round #521 (Div. 3) D. Cutting Out
    Codeforces Round #515 (Div. 3) E. Binary Numbers AND Sum
    Codeforces Round #510 (Div. 2) B. Vitamins
    Codeforces Round #510 (Div. 2) D. Petya and Array(树状数组)
    Codeforces Round #506 (Div. 3) 题解
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13999949.html
Copyright © 2011-2022 走看看