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
lvs
LVM ボリュームに関する情報を表示します。そのファイルシステムが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を仮定)または次のいずれかを/
使用できます。df
df
findmnt
size=$(findmnt -bno size /)
size=$(df -B1 --output=size / | awk 'NR==2{print $1}')
これは、最も正確なサイズであるバイト単位のサイズを提供します。サイズを整数GBに下げるには、1000000000で割ります。
gigabytes=$((size / 1000000000))
またはギガバイト単位で測定するには、ギガバイトではなくギガバイトを意味するlvs
1024ベースのサフィックスを使用します。g
gibibytes=$((size / 1024 / 1024 / 1024))
上記のすべてのコマンドは異なる単位を指定することができますが、ギガバイトとギガバイトに注意する必要があります。