
이미 이 질문을 했지만 업데이트가 되지 않았습니다. 내 생각에는 이 정보가 이것과 연관되어야 한다고 생각합니다 site
. Linux에서 두 개의 출력을 병합해야 합니다. 이것:
lsblk -n -b --output KNAME,NAME,SIZE,MOUNTPOINT | grep -v "fd0" | grep -v "loop" | grep -v "sr0" | grep -v "hdc" | grep -v "cdrom"
결과적으로 나는 다음과 같은 결과를 얻었습니다.
sda sda 53687091200
sda1 └─sda1 53684994048
dm-3 └─dockerVG-rootLV 53682896896 /
sdb sdb 2147483648000
sdb1 └─sdb1 2147482599424
dm-1 ├─hddVG-dockerLV 536866717696 /var/lib/docker
dm-2 └─hddVG-hddLV 1610612736000 /dockerhdd
sdc sdc 536870912000
sdc1 └─sdc1 536869863424
dm-0 └─ssdVG-ssdLV 536866717696 /dockerssd
이:
df --exclude={tmpfs,devtmpfs,squashfs,overlay} | sed -e /^Filesystem/d | awk '{print $6 " " $1 " " $3 " " $4 " " $5}'
결과적으로 다음과 같은 결과를 얻었습니다.
/ /dev/mapper/dockerVG-rootLV 8110496 40591632 17%
/dockerssd /dev/mapper/ssdVG-ssdLV 214133656 274642488 44%
/dockerhdd /dev/mapper/hddVG-hddLV 83278236 1385191240 6%
/var/lib/docker /dev/mapper/hddVG-dockerLV 76046204 412729940 16%
그래서 저는 이 /
, /var/lib/docker
, /dockerhdd
, 포인트를 통해 가입하고 싶습니다 /dockerssd
. 중요한! 다른 마운트 지점이 있는 다른 곳에서 이를 확인하고 싶습니다. 또한 정렬하지 않고 첫 번째 출력의 구조를 저장해야 합니다.
결과적으로 다음과 같은 내용을 받아야 합니다.
sda sda 53687091200
sda1 └─sda1 53684994048
dm-3 └─dockerVG-rootLV 53682896896 / /dev/mapper/dockerVG-rootLV 8110496 40591632 17%
sdb sdb 2147483648000
sdb1 └─sdb1 2147482599424
dm-1 ├─hddVG-dockerLV 536866717696 /var/lib/docker /dev/mapper/hddVG-dockerLV 76046204 412729940 16%
dm-2 └─hddVG-hddLV 1610612736000 /dockerhdd /dev/mapper/hddVG-hddLV 83278236 1385191240 6%
sdc sdc 536870912000
sdc1 └─sdc1 536869863424
dm-0 └─ssdVG-ssdLV 536866717696 /dockerssd /dev/mapper/ssdVG-ssdLV 214133656 274642488 44%
의 어떤 사람이 stackoverflow
나를 도와줬지만 AWK
그의 대답은 나에게 도움이 되지 않았습니다. 또한 나는 그의 명령을 조금 변경했습니다.
awk '/^dm-*/ || /^sd*/ || /^xvd*/ { print $0" "arr[$5] } /^Filesystem/ { mrk=1;next } mrk==1 { arr[$6]=$0 }' <<< $(df --exclude={tmpfs,devtmpfs,squashfs,overlay};lsblk -n -b --output KNAME,NAME,SIZE,MOUNTPOINT)
하지만 결과적으로 나는
sda sda 53687091200 fd0 fd0 4096
sda1 └─sda1 53684994048 sda sda 53687091200
dm-3 └─dockerVG-rootLV 53682896896 / sda1 └─sda1 53684994048
sdb sdb 2147483648000 dm-3 └─dockerVG-rootLV 53682896896 /
sdb1 └─sdb1 2147482599424 sdb sdb 2147483648000
dm-1 ├─hddVG-dockerLV 536866717696 /var/lib/docker sdb1 └─sdb1 2147482599424
dm-2 └─hddVG-hddLV 1610612736000 /dockerhdd dm-1 ├─hddVG-dockerLV 536866717696 /var/lib/docker
sdc sdc 536870912000 dm-2 └─hddVG-hddLV 1610612736000 /dockerhdd
sdc1 └─sdc1 536869863424 sdc sdc 536870912000
dm-0 └─ssdVG-ssdLV 536866717696 /dockerssd sdc1 └─sdc1 536869863424
나는 이것을 받고 싶다:
sda sda 53687091200
sda1 └─sda1 53684994048
dm-3 └─dockerVG-rootLV 53682896896 / /dev/mapper/dockerVG-rootLV 8110496 40591632 17%
sdb sdb 2147483648000
sdb1 └─sdb1 2147482599424
dm-1 ├─hddVG-dockerLV 536866717696 /var/lib/docker /dev/mapper/hddVG-dockerLV 76046204 412729940 16%
dm-2 └─hddVG-hddLV 1610612736000 /dockerhdd /dev/mapper/hddVG-hddLV 83278236 1385191240 6%
sdc sdc 536870912000
sdc1 └─sdc1 536869863424
dm-0 └─ssdVG-ssdLV 536866717696 /dockerssd /dev/mapper/ssdVG-ssdLV 214133656 274642488 44%
답변1
가장 좋은 옵션은 간단한 쉘 스크립트입니다. 기이하고 이해하기 어려운 한 줄짜리 코드를 생성할 수 있지만 이해하기 쉬운 쉘 스크립트가 유지 관리하기 더 좋습니다.
#!/bin/bash
df -h --exclude={tmpfs,devtmpfs,squashfs,overlay} | sed -e /^Filesystem/d | awk '{print $6 " " $1 " " $3 " " $4 " " $5}' > /tmp/dinges.$$
lsblk -n -b --output KNAME,NAME,SIZE,MOUNTPOINT | egrep -v "fd0|loop|sr0|hdc|cdrom" |
while read kname name size mountpoint ; do
printf '%-5s' "$kname"
printf '%-20s' "$name"
printf '%15d' "$size"
printf '%-10s' "$mountpoint"
if [ "$mountpoint" != "" ] ; then
grep "$mountpoint " /tmp/dinges.$$
else
echo
fi
done
rm /tmp/dinges.$$
이제 이것이 빠른 쓰기임을 이해하십시오. 이 스크립트에는 마운트 지점 이름의 공백과 같은 많은 문제가 있지만 무엇을 해야할지 아이디어를 제공해야 합니다.