linux + ルートファイルシステムサイズの印刷

linux + ルートファイルシステムサイズの印刷

lvsはファイルシステムのサイズを表示するのに最適なコマンドです。

lvs
  LV      VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root vgW -wi-ao---- 100.00g
  lv_swap vgW -wi-ao----   7.72g
  lv_var  vgW -wi-ao---- 100.87g

ルートファイルシステムのサイズをキャプチャしようとしています。

これまで、次の構文を作成しました。

lvs | awk  '$1 ~ /root/' | awk '{print $NF}' | sed s'/\./ /g' | awk '{print $1}'

そしてその印刷(予想出力は100)

100

しかし、構文をより良く改善したいと思います。

どんな提案がありますか?

ベストアンサー1

lvsLVM ボリュームに関する情報を表示します。そのファイルシステムがLVMボリュームにあり、どのボリューム(いいえ、論理ボリュームの名前)でないかを知っている場合は、ルートファイルシステムを含むブロックデバイスのサイズ(そのファイルシステムのサイズではありません)を指定します。持つ「ルート」があります)。

size=$(
  lvs --unit b --nosuffix --no-headings --config 'log{prefix=""}' -o size vgW/lv_root
)

LVMボリューム、ディスクパーティション、NBD / loop / md ...デバイスなどのルートファイルシステムを含むブロックデバイスのサイズを確認する(ただし、ルートファイルシステムはブロックバックアップする必要はありません)、デバイス(ネットワークファイルシステムなど) 、zfs、btrfs...)、Linuxでは以下を使用しますlsblk

size=$(
  lsblk -Jbo size,mountpoint | jq '.blockdevices[]|select(.mountpoint=="/").size'
)

ファイルシステムのサイズを見つけるには(GNUを仮定)または次のいずれかを/使用できます。dfdffindmnt

size=$(findmnt -bno size /)
size=$(df -B1 --output=size / | awk 'NR==2{print $1}')

これは、最も正確なサイズであるバイト単位のサイズを提供します。サイズを整数GBに下げるには、1000000000で割ります。

gigabytes=$((size / 1000000000))

またはギガバイト単位で測定するには、ギガバイトではなくギガバイトを意味するlvs1024ベースのサフィックスを使用します。g

gibibytes=$((size / 1024 / 1024 / 1024))

上記のすべてのコマンドは異なる単位を指定することができますが、ギガバイトとギガバイトに注意する必要があります。

おすすめ記事