linux命令(二)free命令

来源:互联网 发布:安卓 模拟经营 知乎 编辑:程序博客网 时间:2024/06/03 23:40

free命令
free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存及被内核使用的buffer。

命令参数

-b, --bytes     显示字节数-k, --kilo      显示千字节数-m, --mega      显示兆字节数-g, --giga      显示千兆字节数    --tera      显示百万兆字节数-h, --human     以人们可读方式显示    --si        权使用1000不使用1024-l, --lohi      显示详细的高低内存统计-o, --old       使用旧模式显示(没有-/+buffers/cache行)-t, --total     显示RAM+swap总内存-s N, --seconds N每隔N秒输出一次-c N, --count   N重复输出N次后,退出      --help    列出帮助 信息后退出-V, --version   输出版本信息和退出

命令输出

free -k  以千字节数输出结果             total       used       free     shared    buffers     cachedMem:       1024048     942868      81180      14576      16776     247588-/+ buffers/cache:     678504     345544Swap:      1045500      95220     950280第一行:total 总内存数量  used 使用的内存数量  free 未使用的内存数量  shared 多进程共享内存数量 buffers  cached为磁盘缓存的数量。而buffers和cached的区别是:buffer:缓存着文件结点之类的信息cache:缓存着读写过的文件内容信息第二行:Mem表示显示的是实际物理内存。1024048=942868+81180(total=used+free)第三行:当缺少内存时,内核会释放buffers和cached的部分页面。所以这一行显示的used=第一行used-第一行buffers-第一行cached。(678504=942868-16776-247588)free=第一行free+第一行buffers+第一行cached。(345544=81180+16776+247588)第四行:swap表示的是swap内存。

命令实现
free命令主要输出关于内存的信息。而内存信息可以通过两种方式获取。

sysinfo系统调用

struct sysinfo {    long uptime;    unsigned long loads[3];    unsigned long totalram;  /*总内存大小*/    unsigned long freeram;   /*空闲内存大小*/    unsigned long sharedram; /*共享内存大小*/    unsigned long bufferram; /*缓存内存大小*/    unsigned long totalswap; /*交换空间内存大小*/    unsigned long freeswap;  /*交换空间空闲内存大小*/    unsigned short procs;    unsigned long totalhigh;    unsigned long freehigh;    unsigned int mem_unit;    char _f[20-2*sizeof(long)-sizeof(int)];};    #include <sys/sysinfo.h>    int sysinfo(struct sysinfo *info);

但sysinfo系统调用只能获取部分内存信息。获取所有内存信息需要读取/proc/meminfo文件。

/proc/meminfo文件
/proc/meminfo文件包含了所有内存相关信息。读取该文件可以获取这些信息。

free命令通过读取/proc/meminfo文件来获取内存信息并输出。

0 0
原创粉丝点击