使用可能な空きスワップ領域の割合を計算しようとしています。次のようなものを使用します。
free | grep 'Swap' | awk '{t = $2; f = $4; print ($f/$t)}'
しかしawk
、投げています:
awk: program limit exceeded: maximum number of fields size=32767
私のプログラムは非常に単純ですが、奇妙な範囲エラーが発生している可能性はありますか?
使用可能な空きスワップ領域の割合を計算しようとしています。次のようなものを使用します。
free | grep 'Swap' | awk '{t = $2; f = $4; print ($f/$t)}'
しかしawk
、投げています:
awk: program limit exceeded: maximum number of fields size=32767
私のプログラムは非常に単純ですが、奇妙な範囲エラーが発生している可能性はありますか?
これを試してください:
free | grep 'Swap' | awk '{t = $2; f = $4; print (f/t)}'
あなたのコードでは、それぞれ $FreeMemory と $TotalMemory である $f と $t を印刷しようとしています。したがって、合計で約 4 ギガ RAM があると思います。これは、awk が標準構成で使用するフィールドの合計を少し上回る 400000 ドルに相当します。meminfo を使用した簡単な試みとは別に、変数を参照する f/t を印刷してみると、答えが得られます。
/proc/meminfo
の行を使用して情報を読み取る方が簡単/堅牢である可能性があることに注意してくださいSwapFree
。
何かのようなもの:
$ grep SwapFree /proc/meminfo | awk '{print $2}'
変数は必要ありません。プレーンを使用できます
awk '{ print $4/$2 }'
/proc/meminfo から読み取ります。
lennart@trololol:~$ grep SwapFree /proc/meminfo | awk '{print $2}'
0
質問は「無料」と「awk」の使用に関するものであることは理解していますが、SAR を実行している場合、これにより最近記録されたパーセンテージ値が得られます。
sar -S|tail -2|head -1|awk '{print $5}'