请选择 进入手机版 | 继续访问电脑版

[LINUX] 浅谈Linux中free下令 以及它的一些有效 选项

[复制链接]
查看50 | 回复2 | 2021-9-5 04:11:09 | 显示全部楼层 |阅读模式

Linux 体系 管理员面对 的一大挑衅 是怎样 在没有任何停机时间的环境 下维护体系 的良好 运行。管理内存使用 是 Linux 管理员又一个具有挑衅 性的使命 。free 是 Linux 中一个标准的并且被广泛使用 的下令 ,它被用来分析内存统计(空闲和已用)。本日 ,我们将要讨论 free 下令 以及它的一些有效 选项。

浅谈Linux中free下令
以及它的一些有效
选项

我们都知道, IT 基础办法 方面的大多数服务器(包括天下 顶级的超级计算机)都运行在 Linux 平台上,由于 和其他操作体系 相比, Linux 更加机动 。有的操作体系 对于一些微乎其微的改动和补丁更新都必要 重启,但是 Linux 不必要 ,只有对于一些关键补丁的更新, Linux 才会必要 重启。

Linux 体系 管理员面对 的一大挑衅 是怎样 在没有任何停机时间的环境 下维护体系 的良好 运行。管理内存使用 是 Linux 管理员又一个具有挑衅 性的使命 。free 是 Linux 中一个标准的并且被广泛使用 的下令 ,它被用来分析内存统计(空闲和已用)。本日 ,我们将要讨论 free 下令 以及它的一些有效 选项。

保举 文章:

smem – Linux 下基于进程 和用户的内存占用报告

vmstat:一个标准的报告假造 内存统计工具

Free 下令 是什么

free 下令 可以或许 表现 体系 中物理上的空闲(free)和已用(used)内存,还有交换(swap)内存,同时,也能表现 被内核使用 的缓冲(buffers)和缓存(caches)。这些信息是通过分析 文件 /proc/meninfo 而网络 到的。

表现 体系 内存

不带任何选项运行 free 下令 会表现 体系 内存,包括空闲(free)、已用(used)、交换(swap)、缓冲(buffers)、缓存(cached)和交换(swap)的内存总数。

  1. # free
  2. total used free shared buffers cached
  3. Mem: 32869744 25434276 7435468 0 412032 23361716
  4. -/+ buffers/cache: 1660528 31209216
  5. Swap: 4095992 0 4095992
复制代码

输出有三行:

第一行:表明全部内存、已用内存、空闲内存、共用内存(重要 被 tmpfs(/proc/meninfo 中的 Shmem 项)使用 )、用于缓冲的内存以及缓存内容大小。

全部:全部已安装内存(/proc/meminfo 中的 MemTotal 项)

已用:已用内存(全部计算 - 空间+缓冲+缓存)

空闲:未使用 内存(/proc/meminfo 中的 MemFree 项)

共用:重要 被 tmpfs 使用 的内存(/proc/meminfo 中的 Shmem 项)

缓冲:被内核缓冲使用 的内存(/proc/meminfo 中的 Buffers 项)

缓存:被页面缓存和 slab 使用 的内存(/proc/meminfo 中的 Cached 和 SSReclaimable 项)

第二行:表明已用和空闲的缓冲/缓存

第三行:表明总交换内存(/proc/meminfo 中的 SwapTotal 项)、空闲内存(/proc/meminfo 中的 SwapFree 项)和已用交换内存。

以 MB 为单位表现 体系 内存

默认环境 下, free 下令 以 KB - Kilobytes 为单位输出体系 内存,这对于绝大多数管理员来说会有一点含糊 (当体系 内存很大的时间 ,我们中的很多 人必要 把输出转化为以 MB 为单位,从而才可以或许 明确 内存大小)。为了避免这个迷惑 ,我们在 free 下令 后面加上 -m 选项,就可以立即 得到以 MB - Megabytes为单位的输出。

  1. # free -m
  2. total used free shared buffers cached
  3. Mem: 32099 24838 7261 0 402 22814
  4. -/+ buffers/cache: 1621 30477
  5. Swap: 3999 0 3999
复制代码

怎样 从上面的输出中检查剩余多少空闲内存?重要 基于已用(used)和空闲(free)两列。你大概 在想,你只有很低的空闲内存,由于 它只有 10%, 为什么?

全部实际 可用内存 = (全部内存 - 第 2 行的已用内存)

全部内存 = 32099

实际 已用内存 = 1621 ( = 全部内存 - 缓冲 - 缓存)

全部实际 可用内存 = 30477

假如 你的 Linux 版本是最新的,那么有一个查看实际 空闲内存的选项,叫做可用(available) ,对于旧的版本,请看表现 -/+ buffers/cache 那一行对应的空闲(free)一列。

怎样 从上面的输出中检查有多少实际 已用内存?基于已用(used)和空闲(free)一列。你大概 想,你已经使用 了超过 95% 的内存。

全部实际 已用内存 = 第一列已用 - (第一列缓冲 + 第一列缓存)

已用内存 = 24838

已用缓冲 = 402

已用缓存 = 22814

全部实际 已用内存 = 1621

以 GB 为单位表现 内存

默认环境 下, free 下令 会以 KB - kilobytes 为单位表现 输出,这对于大多数管理员来说会有一些迷惑 ,以是 我们使用 上面的选项来获得以 MB - Megabytes 为单位的输出。但是,当服务器的内存很大(超过 100 GB 或 200 GB)时,上面的选项也会让人很迷惑 。以是 ,在这个时间 ,我们可以在 free 下令 后面加上 -g 选项,从而立即 得到以 GB - Gigabytes 为单位的输出。

  1. # free -g
  2. total used free shared buffers cached
  3. Mem: 31 24 7 0 0 22
  4. -/+ buffers/cache: 1 29
  5. Swap: 3 0 3
复制代码

表现 全部内存行

默认环境 下, free 下令 的输出只有三行(内存、缓冲/缓存以及交换)。为了同一 以单独一行表现 (全部(内存+交换)、已用(内存+(已用-缓冲/缓存)+交换)以及空闲(内存+(已用-缓冲/缓存)+交换),在 ‘free’ 下令 后面加上 -t 选项。

  1. # free -t
  2. total used free shared buffers cached
  3. Mem: 32869744 25434276 7435468 0 412032 23361716
  4. -/+ buffers/cache: 1660528 31209216
  5. Swap: 4095992 0 4095992
  6. Total: 36965736 27094804 42740676
复制代码

按耽误 运行 free 下令 以便更好的统计

默认环境 下, free 下令 只会表现 一次统计输出,这是不充足 进一步打扫 故障的,以是 ,可以通过添加耽误 (耽误 是指在几秒后再次更新)来定期统计内存活动。假如 你想以两秒的耽误 运行 free 下令 ,可以使用 下面的下令 (假如 你想要更多的耽误 ,你可以按照你的意愿更改数值)。

下面的下令 将会每 2 秒运行一次直到你退出:

  1. # free -s 2
  2. total used free shared buffers cached
  3. Mem: 32849392 25935844 6913548 188 182424 24632796
  4. -/+ buffers/cache: 1120624 31728768
  5. Swap: 20970492 0 20970492
  6. total used free shared buffers cached
  7. Mem: 32849392 25935288 6914104 188 182424 24632796
  8. -/+ buffers/cache: 1120068 31729324
  9. Swap: 20970492 0 20970492
  10. total used free shared buffers cached
  11. Mem: 32849392 25934968 6914424 188 182424 24632796
  12. -/+ buffers/cache: 1119748 31729644
  13. Swap: 20970492 0 20970492
复制代码

按耽误 和具体 次数运行 free 下令

别的 ,你可以按耽误 和具体 次数运行 free 下令 ,一旦达到某个次数,便自动 退出。

下面的下令 将会每 2 秒运行一次 free 下令 ,计数 5 次以后自动 退出。

  1. # free -s 2 -c 5
  2. total used free shared buffers cached
  3. Mem: 32849392 25931052 6918340 188 182424 24632796
  4. -/+ buffers/cache: 1115832 31733560
  5. Swap: 20970492 0 20970492
  6. total used free shared buffers cached
  7. Mem: 32849392 25931192 6918200 188 182424 24632796
  8. -/+ buffers/cache: 1115972 31733420
  9. Swap: 20970492 0 20970492
  10. total used free shared buffers cached
  11. Mem: 32849392 25931348 6918044 188 182424 24632796
  12. -/+ buffers/cache: 1116128 31733264
  13. Swap: 20970492 0 20970492
  14. total used free shared buffers cached
  15. Mem: 32849392 25931316 6918076 188 182424 24632796
  16. -/+ buffers/cache: 1116096 31733296
  17. Swap: 20970492 0 20970492
  18. total used free shared buffers cached
  19. Mem: 32849392 25931308 6918084 188 182424 24632796
  20. -/+ buffers/cache: 1116088 31733304
  21. Swap: 20970492 0 20970492
复制代码

人类可读格式

为了以人类可读的格式输出,在 free 下令 的后面加上 -h 选项,和其他选项比如 -m 和 -g 相比,这将会更人性化输出(自动 使用 GB 和 MB 单位)。

  1. # free -h
  2. total used free shared buff/cache available
  3. Mem: 2.0G 1.6G 138M 20M 188M 161M
  4. Swap: 2.0G 1.8G 249M
复制代码

取消缓冲区和缓存内存输出

默认环境 下,缓冲/缓存内存是同时输出的。为了取消缓冲和缓存内存的输出,可以在 free 下令 后面加上 -w 选项。(该选项在版本 3.3.12 上可用)

留意 比较上面有缓冲/缓存的输出。

  1. # free -wh
  2. total used free shared buffers cache available
  3. Mem: 2.0G 1.6G 137M 20M 8.1M 183M 163M
  4. Swap: 2.0G 1.8G 249M
复制代码

表现 最低和最高的内存统计

默认环境 下, free 下令 不会表现 最低和最高的内存统计。为了表现 最低和最高的内存统计,在 free 下令 后面加上 -l 选项。

  1. # free -l
  2. total used free shared buffers cached
  3. Mem: 32849392 25931336 6918056 188 182424 24632808
  4. Low: 32849392 25931336 6918056
  5. High: 0 0 0
  6. -/+ buffers/cache: 1116104 31733288
  7. Swap: 20970492 0 20970492
复制代码

阅读关于 free 下令 的更过信息

假如 你想相识 free 下令 的更多可用选项,只需查看其 man 手册。

  1. # free --help
  2. or
  3. # man free
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar Rudy64077 | 2021-9-17 12:48:32 | 显示全部楼层
论坛的人气不行了!
回复

使用道具 举报

avatar 醉生三世生d | 2021-10-6 15:49:42 | 显示全部楼层
admin楼主英明!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则