
Ich habe diese Frage bereits gestellt, allerdings ohne Update. Ich denke, diese Information sollte damit zusammenhängen site
. Ich muss zwei Ausgaben in Linux zusammenführen. Diese:
lsblk -n -b --output KNAME,NAME,SIZE,MOUNTPOINT | grep -v "fd0" | grep -v "loop" | grep -v "sr0" | grep -v "hdc" | grep -v "cdrom"
Als Ergebnis habe ich:
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
Und das:
df --exclude={tmpfs,devtmpfs,squashfs,overlay} | sed -e /^Filesystem/d | awk '{print $6 " " $1 " " $3 " " $4 " " $5}'
Als Ergebnis habe ich:
/ /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%
/
Ich möchte also über diese Punkte , /var/lib/docker
, /dockerhdd
, , verbinden /dockerssd
. Wichtig! Ich möchte dies an einer anderen Stelle überprüfen, wo wir weitere Einhängepunkte haben werden. Außerdem muss ich die Struktur der ersten Ausgabe ohne Sortierung speichern.
Als Ergebnis muss ich so etwas erhalten:
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%
Eine Person von stackoverflow
hat mir über geholfen AWK
, aber ihre Antwort hat mir nicht geholfen. Außerdem habe ich ihren Befehl ein wenig geändert.
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)
Aber als Ergebnis habe ich
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
Ich möchte Folgendes erhalten:
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%
Antwort1
Die beste Option wäre ein einfaches Shell-Skript. Sie produzieren vielleicht bizarre, unverständliche Einzeiler, aber ein verständliches Shell-Skript ist besser wartbar.
#!/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.$$
Beachten Sie, dass dies eine schnelle Arbeit ist. Dieses Skript hat viele Probleme (z. B. Leerzeichen in den Einhängepunktnamen), aber es sollte Ihnen eine Vorstellung davon geben, was zu tun ist.