介绍
神经如果你 ssh 到,你会看到类似这样的东西。
本文深入探讨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命令的结果,用total和used的Mem的值计算出来的。
字符串用换行符 (
) 分割,然后巧妙地进行模式匹配以提取值。
这很酷我真的很想在某个时候使用这种技术。
试用
神经如果您正在使用,请 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