各ハードディスクとパーティションの全体サイズ、使用可能なサイズ、使用されたサイズを調べるプログラムをC++で作成したという。コマンドを使用してこれを実行できます。
検索してみると、サイズを取得する方法にはlsblkとdfという2つの方法があります。次の理由で出力間に違いがあることがわかります。dfで得られた結果がlsblkと一致しないのはなぜですか?
では、どちらを選ぶべきですか? (lsblkでも使用してfreesizeを使用することはできません。)
私はubuntu 18.04を使用します。
答え1
C ++プログラムを書くときは、3番目と4番目のアプローチをお勧めします。
- から完全なパーティションサイズを取得します
/sys/block/sd*/sd*/size
。 - を呼び出して、使用されているファイルシステムサイズと利用可能なファイルシステムサイズを取得します
statfs
。man statfs
詳細についてはをご覧ください。はい、これはパーティションをマウントするときにのみ機能します。
より速く、出力を解析する必要はなく、(そうでない)イベントに巻き込まれたり、出力形式を変更したりする必要はdf
ありません。lsblk