awk "df -Pm"コマンドを使用してFS使用率が90%を超えるFS名を取得するには?

awk "df -Pm"コマンドを使用してFS使用率が90%を超えるFS名を取得するには?

次のonelinerを使用して、90%以上の使用量を持つすべてのディスクの名前を取得しようとしています。

df -Pm | awk '+$5 >= 90 {print}'

ただし、「100%使用済み」のケースは表示されません。 「100%」を得るにはgrepを実行する必要があります。なぜ正しく機能しないのですか?

答え1

出力例を挙げることができますかdf -Pm?私はほとんどがディスク容量を100%使用していないと確信しています。 ;)

dfは出力を修正してテストしましたが、あなたのawk部分は大丈夫です。

$ cat /tmp/1 | awk '+$5 >= 90 {print}'
tmpfs                        1978         1      1978     101% /dev/shm
tmpfs                        1978         1      1977     100% /run

答え2

私の考えでは、問題はパーセント記号にあります。これは> =を文字列比較に置き換えることができます。比較を実行する前に$ 5に0を追加すると、$ 5が数値として解釈されます。

df -P | awk '0 + $5 >= 90 { print }'

答え3

少し違ったアプローチを取ることをお勧めします。少しの数学は誰にも害を与えません。

df -Pml | tail -n +2 | awk '{if ($4/$2 < 0.1) print $1,"is getting full."}'

これは、ファイルシステムの空き容量が10%未満であるかどうかを計算します(列が「使用済み」とマークされ、-lローカルファイルシステムのみが印刷されても実際にdfが表示される方法です)。入れるとtail -n +2タイトルは省略されます。

関連情報