rootユーザーが使用できるファイルシステムの空き容量を表示します


12

デフォルトでは、Linuxはファイルシステムの一部をrootユーザー用に少なくともext4で予約しています(通常のユーザーがドライブを完全にいっぱいにしてシステムをクラッシュさせないようにし、断片化を減らすため)。ただし、df通常のユーザーには明らかな空き領域のみが表示されます(rootとして実行されている場合でも)。rootがアクセスできる「実際の」空きスペースをどのように表示しますか?

回答:


6

組み込みのツールがあるかどうかはわかりませんが、予約をデフォルトの5%のままにしておくと、次のようになります。

df / | grep dev | cut -f 3,6 -d\  | awk '{print ($1*.05)+$2}'

dfルート、grepdevが含まれている行(ヘッダーを削除するため)、cutサイズ、および使用可能なフィールド。次に、awkスクリプトを使用して、使用可能なディスクサイズの5%を計算します。

tune2fs -l <device>スクリプトから実際の予約を引き出し、上記と組み合わせることができます。


2
そのため、次のコマンドを実行すると、特権ユーザー用に予約されているパーティション領域の量がわかりますtune2fs -l /dev/DEVICE | egrep "Block count|Reserved block count"。たとえば、「マルチメディアバッファー」パーティションの場合:Block count: 2621440Reserved block count: 128449:使用可能なブロックの4.9%(断片化を防ぐための控えめな設定)。
tuk0z

cutコマンドを使用する必要はありませんawk。直接フィールドを選択できます。実際、cutコマンドは期待どおりに機能しませんでした。とにかく、私はもっと正確な答えを与えるはずの別の答えを出しました。
jarno 2017

1
tune2fs -m <percentage> <device-name>rootでの使用にのみ予約されているディスク容量を変更するために実行します。
luka5z

1
:上記の私に触発さは、MBのルートボリューム上の予約領域を計算するために、この思い付いたsudo tune2fs -l $(df | grep -E '/$' | cut -d\ -f 1) | egrep "Reserved block count|Block size" | paste -sd\ | awk '{print ($4 * $7 / ( 1024 * 1024 ) ), "MB"}'
mp3foley

これは移植可能な答えではありません。以下で必要な答えを確認してください(ネタバレ:tune2fs /dev/sda1またはそれ以上stat -f -c '%a blocks free and %f blocks free for root (%S bytes per block)' /
trs

17

コマンドtune2fs/ sbin / tune2fsにあります)を使用すると、予約済みスペースを簡単に判別できます:(およびその他!)

tune2fs -l /dev/sda1

システムの情報を参照用に提供します。この質問にとって重要ではない無関係な行を削除します。

ヘッダー...とボリューム名、すべてのドライブにラベルを付け、必要に応じて簡単に識別できるようにしています。

tune2fs 1.42.4 (12-Jun-2012)
Filesystem volume name:   xenon
Last mounted on:          /
...

システムが稼働している間は、本当にこれを「クリーン」と言ってほしい。正直!

Filesystem state:         clean

ここから、データストレージ容量の情報が始まります。

ここで、合計121,179,648ブロックがあることを確認できます。ブロックサイズは4K(4096)で、いくつかの大きな数値(462ギッシュGB)に乗算されます。(ブロックサイズは以下に記載されています)

Block count:              121179648

そして、予約済みブロック...上記の数と以下の数を見ると、1%が予約済みであることが比較的迅速にわかるはずです。この場合(4.62-ish GB)

Reserved block count:     1211796

現在、どのくらいの空き容量がありますか?ここだよ!

Free blocks:              104090586
...

そして、すべての重要なブロックサイズ。乗算に便利です。

Block size:               4096
...

これらの行は、ブロックが予約されているWHOを示しています...この場合、ユーザー0、ルート、

Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
...

ここにはさらに多くの情報がありますが、これにより、どれだけの量が利用可能で、どれだけ多くのものがroot用に予約されているかをすばやく確認できるようになります。簡単な数学。

お役に立てれば。覚えておいてください... manページはあなたの友達です。


2

これは、「/ path」に関連するパーティションの空きスペースをバイト単位で表示します

printf '%s' $(($(stat -f --format='%f*%S' /path)))

実行するためにスーパーユーザーである必要はありません。

ところで私はどういう違いがあるのか​​よくわかりません

%sブロックサイズ(高速転送用)

%S基本ブロックサイズ(ブロックカウント用)

の使用中stat


かっこいい-これはルート用に予約されたスペースを占めていますか?
ポール

@Paulはい、含まれています
jarno 2017

出力は事実上合計です。そのため、出力をパイプしbcてバイト数を取得したり、--format='%f*%S/1024/1024/1024' | bc選択した分割数に応じてキロバイト/メガバイト/ギガバイトを取得したりすることもできます。
ポール、

@Paulまあ、私はそれを製品と呼びます。バイナリ接頭辞はそれぞれ、kibibytes、mebibytesとgibibytesと呼ばれています。周囲の算術展開 $(( ... ))が計算を行いますが、結果は商の整数部分のみになります(除算を追加した場合)。または、シェルが算術展開をサポートしていないということですか?
jarno 2017

@Paulしかし、bc代わりにを使用すると、必要に応じて任意の精度で商を取得できます。
jarno 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.