介绍

神经如果你 ssh 到,你会看到类似这样的东西。

Memory usageを楽しむ(Elixir)

本文深入探讨Memory usage

回答

一个快速的答案。

  def memory_stats() do
    # Use free to determine memory statistics. free's output looks like:
    #
    #                   total        used        free      shared  buff/cache   available
    #     Mem:         316664       65184      196736          16       54744      253472
    #     Swap:             0           0           0

    {free_output, 0} = System.cmd("free", [])
    [_title_row, memory_row | _] = String.split(free_output, "
")
    [_title_column | memory_columns] = String.split(memory_row)
    [size_kb, used_kb, _, _, _, _] = Enum.map(memory_columns, &String.to_integer/1)
    size_mb = round(size_kb / 1000)
    used_mb = round(used_kb / 1000)
    used_percent = round(used_mb / size_mb * 100)

    {:ok, %{size_mb: size_mb, used_mb: used_mb, used_percent: used_percent}}
  rescue
    # In case the `free` command is not available or any of the out parses incorrectly
    _error -> :error
  end

简而言之,就是free命令的结果,用totalusedMem的值计算出来的。
字符串用换行符 ( ) 分割,然后巧妙地进行模式匹配以提取值。
这很酷我真的很想在某个时候使用这种技术。

试用

神经如果您正在使用,请 ssh 并享受。

我在 macOS 上试过。但是在 macOS 上没有 free 命令。
所以让我们用 Docker 运行它。

命令
docker pull hexpm/elixir:1.14.1-erlang-25.1.2-ubuntu-xenial-20210804
docker run --rm -it hexpm/elixir:1.14.1-erlang-25.1.2-ubuntu-focal-20211006 iex

IEx 将启动。
之后,请执行“答案”中显示的代码。
我会重申一下。

{free_output, 0} = System.cmd("free", [])
[_title_row, memory_row | _] = String.split(free_output, "
")
[_title_column | memory_columns] = String.split(memory_row)
[size_kb, used_kb, _, _, _, _] = Enum.map(memory_columns, &String.to_integer/1)
size_mb = round(size_kb / 1000)
used_mb = round(used_kb / 1000)
used_percent = round(used_mb / size_mb * 100)

随意复制和粘贴并尝试一下。

综上所述

本文神经我试图深入挖掘Memory usagessh 时显示的内容。
我还介绍了如何使用 Docker 进行尝试。

享受灵药! ! !


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308631975.html

相关文章:

  • 2021-12-22
  • 2021-12-30
  • 2022-12-23
  • 2021-07-17
  • 2021-08-16
  • 2021-11-06
  • 2021-09-17
  • 2021-09-26
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-18
相关资源
相似解决方案