次のコマンドは、一般的な形式のメモリ使用量を提供します。
awk '/^Mem/ {printf("%u%%", 100*$3/$2);}' <(free -m)
有効なjson形式でインポートしたいと思います。
予想出力:
例:
{"Memory":"80"}
答え1
おそらく、このようにproc fsから情報を読み取り、bcを使用して計算できます。
#!/bin/bash
tot=$(awk '{ if (/MemTotal:/) {print $2} }' </proc/meminfo)
free=$(awk '{ if (/MemFree:/) {print $2} }' </proc/meminfo)
pers=$(echo "scale=0; 100 - 100 * $free / $tot" | bc)
echo '{"Memory":"'$pers'"}'
答え2
強制しない場合は、JSON形式をawk
好みますruby
。基本awk
スクリプトよりはるかに長いですが、後で拡張する方が簡単です。
ruby -rjson -nae 'BEGIN{j={}};j["Memory"]="#{(100*$F[2].to_f/$F[1].to_f).to_i}%"if/^Mem/;END{puts j.to_json}' <(free -m)
答え3
使用jo
与えられた値と計算されたキーMemory
と使用されたメモリ比を使用して単一のJSONオブジェクトを作成します。free
awk
jo Memory="$(free -m| awk '/^Mem:/ { printf "%u%%\n", 100*$3/$2 }')"
出力に使用される単位はfree
重要ではありません。
出力例:
{"Memory":"5%"}
同等ですが、以下を使用してくださいjq
。
jq -nc --arg memused "$(free | awk '/^Mem:/ { printf "%u%%\n", 100*$3/$2 }')" '{ Memory: $memused }'
答え4
そしてアッ一行:
awk '$1=="MemTotal:"{t=$2} $1=="MemFree:"{f=$2}END{printf "{\042Memory\042:\042%s\042}\n", int(100 - 100 * f / t)}' /proc/meminfo