ファイルシステムの空きディスク容量を出力しようとしています/example
。
コマンドdf -k /example
を実行すると、使用可能なディスク領域に関する適切な情報をKB単位で取得できますが、それは人間であり、実際にそれを見るだけです。
このデータを取得して、シェルスクリプトの別の場所で使用する必要があります。最初はcut
を使用することを考えましたが、その後、ディスクの空き容量が変化し、カットしても正確な結果が得られないため、スクリプトを他のディスクに移植できません。
例の空きディスク容量だけをKBで出力するにはどうすればよいですか?
df
の出力を取得してデータをKBで表示するには、_-k
_フラグを使用するだけです。
_df -k
_
また、ファイルシステムをdf
に指定すると、すべてではなく、その特定の値が取得されます。
_df -k /example
_
質問の本文に関して:特定のファイルシステムの空きディスク容量を抽出したい。これにはいくつかの処理が必要です。
通常の_df -k
_出力が与えられた場合:
_$ df -k /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7223800 4270396 2586456 63% /
_
Available
(4番目の列)は、たとえばawk
またはcut
(以前はtr
から_squeeze-repeats
_(_-s
_)スペースの場合):
_$ df -k /tmp | tail -1 | awk '{print $4}'
2586456
$ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
2586456
_
いつものように、結果を変数に保存する場合は、次のようなvar=$(command)
構文を使用します。
_$ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
$ echo "$myUsed"
2586456
_
また、 Tim Bunceによるコメント から_--direct
_を使用して長いファイルシステム名を処理し、代わりに_-
_を取得して、エンジンを中断する行を出力しないようにすることができます。
_$ df -k --direct /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
- 7223800 4270396 2586456 63% /
_
Stat(2)コマンドを使用して、空きブロックを表示したり、各ブロックの大きさを調べることができます。
stat -f --printf="%a %s\n" /
指定されたファイルシステム上の空きブロック数(%a)(/)に続いてブロックサイズ(%s)が表示されます。サイズをkBで取得するには、次の例のようにbc(1)コマンドを使用できます。
stat -f --printf="%a * %s / 1024\n" / | bc
最後に、これを変数に入れるには、単にバックティック置換(または最初の答えのように$())を使用するだけです:
SOMEVAR=`stat -f --printf="%a * %s / 1024\n" / | bc`
興味深い列のみを表示
df /example --total -k -h --output=source,avail
完全に標準ではありません(Ubuntuのマニュアルページで--outputを見ただけです)。この場合、列を削除するためだけにAwkなどが必要ではありません。
これは別の解決策です。
df --output=avail -m /example | tail -1
出力:
6415