df -k .
と入力すると、次の出力が得られます
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 16512936 8650196 7023932 56% /
私がやっていることは、最後の行をテールし、4番目のフィールドを抽出して正しく取得することです。
ただし、ファイルシステム名が長い場合は、たとえば、 /dev/niraj-asdsdsd-dsdsdsa
、次にdf
は新しい行に詳細を出力し、ロジックを使用すると、7023932ではなく56%になります。
だから私の質問は、どのような状況で正確な空き領域を決定する方法ですか?
ファイル統計を取得するのに便利なstat
utilityは、ファイルシステムに関する情報を提供することもできます。-f
オプションを指定するだけです。
ただし、デバイスファイル(/boot
)ではなく、マウントポイント(例:/dev/sda1
)を指定してください。後者の場合、stat
は/dev
ファイルシステムの統計を報告するためです。これは(debianでは)仮想ファイルシステムであり、物理ディスクとは関係ありません。
$マウント| grep sda1 /boot typeext2の/ dev/sda1(rw、relatime、errors = Continue、user_xattr、acl) $ env stat -f/dev/sda2 ファイル: "/ dev/sda1" ID:0 Namelen:255タイプ:tmpfs ブロックサイズ:4096基本ブロックサイズ:4096 ブロック:合計: 2560無料:2560利用可能:2560 iノード:合計:497355無料:496852 $ env stat -f/boot ファイル: "/ boot" ID:fe082d7c0c42ea6f Namelen:255タイプ:ext2/ext3 ブロックサイズ:1024基本ブロックサイズ:1024 ブロック:合計: 99150無料:52490利用可能:47370 iノード:合計:25688無料:25355
env
を使用して、シェルの組み込みのstatコマンド(使用されているすべてのオプションを提供する場合と提供しない場合があります)が使用されていないことを確認しました。したがって、質問に答えるために、カスタマイズされた(-c
)統計出力形式を使用して、%a
の使用可能なスペース(/
)を取得できます。
$ env stat -f -c %a /
1711744
これはブロック単位であるため、賢く、出力をbc
計算機にパイプすることにより、システムにKB単位(%S/1024
)のブロックサイズで乗算を実行させます。
$ env stat -f -c '%a*%S/1024' / | bc
6846976
df
で確認しましょう:
$ df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 25066604 16939628 6846976 72% /
結構です、同じ数が報告されました!
Niraj-diユーティリティを見たことがありますか?これは、少なくとも必要なデータを抽出するためのより簡単な方法を提供する可能性があり、ドライブスペースのCSV形式の出力を提供します。
di -c