
次の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
タイトルは省略されます。