df
-h부터 lsblk
크기 사이의 디스크 크기를 비교하고 싶습니다 resize2fs
. 그 후에는 크기를 기준으로 크기를 확인 resize2fs
하고 싶습니다 .df -h
lablk
그래서 우리는 다음을 가지고 있습니다lsblk
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 4G 0 disk /data1
sdc 8:32 0 4G 0 disk /data2
sdd 8:48 0 4G 0 disk /data3
df -h에서
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 3.9G 22M 3.8G 1% /data1
/dev/sdc 3.9G 18M 3.8G 1% /data2
/dev/sdd 3.9G 18M 3.8G 1% /data3
그래서 나는 bash 스크립트에서 다음을 수행했습니다.
[[ ` lsblk | grep "^sdb" | awk '{print $4}' ` == ` df -h | awk -v disk_var="sdb" '$1 ~ disk_var' | awk '{print $2}' ` ]] && echo "val are equal " || echo "val are not equal "
그래서 위에서 얻은 값은 값이 동일해야 함에도 불구하고 동일하지 않습니다.
df -h
" "를 사용하여 의 값과 비교할 수 있는 읽기 가능한 크기 값을 얻는 방법에 대한 제안이 있으십니까 lsblk
?
우리는 rhel 7.6 서버를 개발 중입니다.
답변1
변수를 만들어 시작할 수 있습니다.
df=$(df -h | awk '/sdb/{printf "%.0f\n", $2}' | tr -d 'M|G|T')
blk=$(lsblk | awk '/sdb/ {printf "%.0f\n", $4}' | tr -d 'M|G|T')
그런 다음 그들과 함께 테스트를 실행하십시오.
[[ $blk -eq $df ]] && echo "val are equal " || echo "val are not equal "
답변2
해당 매뉴얼에서:
df는 각 파일 이름 인수를 포함하는 파일 시스템의 여유 디스크 공간 크기를 표시합니다.
lsblk는 사용 가능하거나 지정된 모든 블록 장치에 대한 정보를 나열합니다.
IOW는 원시 블록 장치 및 해당 크기 df
와 함께 각 파티션이 보유할 수 있는 실제 데이터의 양을 보여줍니다 .lsblk
동시에 해당 필드를 사용하여 lsblk
동일한 정보를 표시 할 수 있습니다.df
lsblk -b -o NAME,FSSIZE,FSUSED,FSAVAIL,FSUSE%,MOUNTPOINT
그리고 df -B1
정확히 일치합니다.
df
여유 공간과 여유 백분율 값이 혼동스럽습니다 . 그들은 너무 무관해 보였습니다. 예를 들어 루트 파티션의 경우 원시 바이트 측면에서 반올림하면 출력 과 동일 하고 일치하는 31.9%
결과를 얻지 만 표현 은 크게 다릅니다.32%
lsblk
df
34%