Pfree
크기를 가져오지만 부동 소수점 대신 정수를 사용하는 명령을 작성하고 싶습니다.
pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg lvm2 a-- 277.97g 111.97g
예를 들어 다음을 pvs
수행할 수 있습니다.
pvs --units g | awk '{print $NF}' | sed s'/\./ /g' | awk '{print $1}' | tail -1
그것은 주었다
111
하지만 다른 경우에는 두 개 이상의 PV
줄이 생기고 총계를 계산해야 합니다.Pfree
실시예 1
pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg lvm2 a-- 149.51g 53.51g
/dev/sda3 vg lvm2 a-- 50.00g 2.1g
실시예 2
pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg lvm2 a-- 149.51g 520.00m
/dev/sda3 vg lvm2 a-- 50.00g 3.51g
그래서 우리는 Giga의 계산 결과를 제공할 수 있는 lvm 명령을 검색하려고 합니다.
예제 1과 관련하여 우리는 다음을 얻어야 합니다.55.6
또는
예제 2에 관해 우리는 다음을 얻어야 합니다.4.2
lvm 이 마법을 달성하는 방법에 대한 제안이 있습니까?
그렇지 않다면, 나는 감사할 것입니다awk/sed/펄도움이 될 수 있는 문법
답변1
PV 여유 공간만 확보pvs
# pvs -o pv_free --unit=g --no-suffix --no-heading
1.00
0.31
그리고bc
# pvs -o pv_free --unit=g --no-suffix --no-heading | paste -s -d+ - | bc
1.31
답변2
또는 약간 덜 우아하고 다소 불필요한 awk 사용(Vojtech의 솔루션에 비해)은 목적에 맞게 조정할 수 있습니다(이미 awk에 대한 욕구를 언급했기 때문에).
[root@localhost Documente]# lvs --no-heading --unit=g
root cl -wi-ao---- 17,00g
swap cl -wi-ao---- 2,00g
[root@localhost Documente]# lvs --no-heading --unit=g | awk '{sum+=$4} END {print sum}'
19
그러나 나는 개인적으로 위의 대답의 단순성을 고수할 것입니다.