3

使用可能な空きスワップ領域の割合を計算しようとしています。次のようなものを使用します。

free | grep 'Swap' | awk '{t = $2; f = $4; print ($f/$t)}'

しかしawk、投げています:

awk: program limit exceeded: maximum number of fields size=32767

私のプログラムは非常に単純ですが、奇妙な範囲エラーが発生している可能性はありますか?

4

5 に答える 5

5

これを試してください:

free | grep 'Swap' | awk '{t = $2; f = $4; print (f/t)}'

あなたのコードでは、それぞれ $FreeMemory と $TotalMemory である $f と $t を印刷しようとしています。したがって、合計で約 4 ギガ RAM があると思います。これは、awk が標準構成で使用するフィールドの合計を少し上回る 400000 ドルに相当します。meminfo を使用した簡単な試みとは別に、変数を参照する f/t を印刷してみると、答えが得られます。

于 2012-10-08T09:41:04.253 に答える
2

/proc/meminfoの行を使用して情報を読み取る方が簡単/堅牢である可能性があることに注意してくださいSwapFree

何かのようなもの:

$ grep SwapFree /proc/meminfo | awk '{print $2}'
于 2012-10-08T09:32:37.313 に答える
1

変数は必要ありません。プレーンを使用できます

awk '{ print $4/$2 }'
于 2012-10-08T09:30:57.113 に答える
0

/proc/meminfo から読み取ります。

lennart@trololol:~$ grep SwapFree /proc/meminfo | awk '{print $2}'
0
于 2012-10-08T09:34:27.717 に答える
-2

質問は「無料」と「awk」の使用に関するものであることは理解していますが、SAR を実行している場合、これにより最近記録されたパーセンテージ値が得られます。

sar -S|tail -2|head -1|awk '{print $5}'
于 2015-09-17T04:41:15.793 に答える