0 前言
在系统安全检查中,内存使用情况也是一块可以关注的内容。Linux提供了多个获取内存信息的命令很多。今天我们先研究free命令。
1 free命令的功能、用法和选项说明
1.1 free命令的功能
free 命令可以显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
[purpleendurer @ bash ~] free --help
Usage:
free [options]
Options:
-b, --bytes show output in bytes
-k, --kilo show output in kilobytes
-m, --mega show output in megabytes
-g, --giga show output in gigabytes
--tera show output in terabytes
--peta show output in petabytes
-h, --human show human-readable output
--si use powers of 1000 not 1024
-l, --lohi show detailed low and high memory statistics
-t, --total show total for RAM + swap
-s N, --seconds N repeat printing every N seconds
-c N, --count N repeat printing N times, then exit
-w, --wide wide output
--help display this help and exit
-V, --version output version information and exit
For more details see free(1).
[purpleendurer @ bash ~]
1.2 free命令的用法
free [选项]
1.3 选项说明
选项 | 说明 |
---|---|
-b --bytes | 以字节为单位显示输出 |
-k --kilo | 以千字节为单位显示输出 |
-m --mega | 以兆字节为单位输出 |
-g --giga | 以 GB 为单位输出 |
--tera | 以 TB 为单位输出 |
--peta | 以 PB 为单位输出 |
-h --human | 显示人类可读的输出 |
--si | 使用 1000 的幂而不是 1024 |
-l --lohi | 显示详细的低内存和高内存统计信息 |
-t --total | 显示 RAM + 交换的总计 |
-s N --seconds N | 每 N 秒重复打印一次 |
-c N --count N | 重复打印 N 次,然后退出 |
-w --wide | 宽宽输出 |
--help | 显示此助信息并退出 |
-V --version | 输出版本信息并退出 |
2 free命令应用实例
2.1 free
[purpleendurer @ bash ~]free total used free shared buff/cache available Mem: 3855940 236804 2051384 360 1567752 3371200 Swap: 0 0 0 [purpleendurer @ bash ~]
命令返回的信息针对 Mem(内存)和Swap(交换空间)分别显示了6列信息。
Mem(内存)比交内容理解。
swap space (交换空间)是磁盘上的一块区域,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存来使用,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。
再来看6列信息的含义。
第1列 total :系统总的可用物理内存和交换空间大小。
第2列 used :已经被系统使用的物理内存和交换空间。
第3列 free :还有多少物理内存和交换空间可用使用。
第4列 shared : 显示被共享使用的物理内存大小。
第5列 buff/cache :被 buffer 和 cache 使用的物理内存大小。
第6列 available : 可以被应用程序使用的物理内存大小。
buff ( buffer cache),即 "缓冲区"。操作系统中文件系统的最小寻址单元是块,每个块包含一个或多个扇区。当一个块被调入内存时,它要存储在一个缓冲区中。每个缓冲区与一个块对应。缓冲区只是把磁盘上的块直接搬到内存中而不关心块中究竟存放的是什么格式的文件。
cache (page cache),即 "页高速缓存"。页高速缓存是内核实现的磁盘缓存。它通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问,来减少对磁盘的 I/O 操作。页高速缓存缓存的是内存页面。缓存中的页来自对普通文件、块设备文件(即 buffer cache 呀)和内存映射文件的读写。
对于系统来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache。
2.2 free -h :显示人类可读的输出
[purpleendurer @ bash ~]free -h total used free shared buff/cache available Mem: 3.7G 259M 1.9G 360K 1.5G 3.2G Swap: 0B 0B 0B [purpleendurer @ bash ~]
2.3 free -h -s 5:每隔5秒显示一次信息
[purpleendurer @ bash ~]free -h -s 5 total used free shared buff/cache available Mem: 3.7G 259M 1.9G 360K 1.5G 3.2G Swap: 0B 0B 0B total used free shared buff/cache available Mem: 3.7G 258M 1.9G 360K 1.5G 3.2G Swap: 0B 0B 0B total used free shared buff/cache available Mem: 3.7G 259M 1.9G 360K 1.5G 3.2G Swap: 0B 0B 0B total used free shared buff/cache available Mem: 3.7G 259M 1.9G 360K 1.5G 3.2G Swap: 0B 0B 0B