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
但我想改進我的語法變得更好
有什麼建議麼 ?
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' )
要查找
/
文件系統的大小,您可以使用df
(假設 GNUdf
)或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))
儘管上面的所有命令還允許指定不同的單位(但要注意 gigabyte 與 ggibyte,大多數會為您提供浮點數,並且可能會以不同的方式進行舍入,並根據語言環境對十進制基數使用不同的字元)。