Puncte:1

Cum obțin o serie de hard disk-uri atașate în prezent (dar nu formatate/montate) sortate după dimensiune (dar fără datele de dimensionare din matrice)

drapel es

Am vrut o modalitate de a scrie un script pentru montarea hard disk-urilor la un anumit punct de montare. Dupa cateva cautari, am gasit: https://gist.github.com/trentmswanson/9c22bb71182e982bd36f

Acesta a fost pentru MS Azure și nu a acoperit anumite tipuri de hard disk-uri din Infrastructura AWS.A folosit sdf în nvm necesar. Am făcut acele modificări și rezultatul a funcționat. Am o matrice care deține punctele de montare:

# Puncte de montare personalizate pentru primele 2 HDD-uri
tipărit -A MountPoint
MountPoint[1]="/FileMakerData"
MountPoint[2]="/FileMakerData/Backups"

și o linie care încearcă să citească „această” dimensiune HDD și să o monteze corespunzător:

# Testează dimensiunea volumului pentru a testa dimensiunea corectă a discului
DiskSize=$(sudo fdisk -s ${DISK})

# Calculează numărul de GB și resetează variabila ca număr
lasă DiskSize=DiskSize/1048576

echo „$DiskSize”
# Utilizează dimensiunea discului pentru a determina tipul discului. 
# Se presupune că unitatea de rezervă nu va fi niciodată mai mică de 50 GB și că datele nu vor porni niciodată GT 50 GB
if [ "$DiskSize" -lt 50 ]; 
apoi DiskType="Date"
elif ["$DiskSize" -ge 50 ];
apoi DiskType="Backup"
fi

O funcție primește apoi punctul de montare din matrice pe baza valorii.

get_next_mountpoint() {
    DeviceType=${1}
    if ( test "$DeviceType" == "Date"); apoi ecou „${MountPoint[1]}”
    elif (test "$DeviceType" == "Backup"); apoi ecou „${MountPoint[2]}”
    altfel
        # Echos gol, astfel încât scriptul va ști să iasă din buclă
        ecou ""
    fi
}

Există mult mai mult în scenariu. Problema cu acest proces, totuși, este că HDD-ul care urmează să fie montat pe /FileMakerData trebuie creat/montat mai întâi.

Când montez /FileMakerData/Backups, apoi montez /FileMakerData, primesc un singur director în /FileMakerData care este etichetat „pierdut+găsit”. Este logic ca acest lucru să se întâmple, deoarece schimb brusc mijlocul structurii directoarelor. Dar, nu pot găsi o modalitate de a enumera hard disk-urile prin creșterea dimensiunii, astfel încât, atunci când scriptul primește o ordine arbitrară din foldere (deoarece AWS le-a montat înapoi) să pot încă monta unitatea de dimensiune corectă în folderul corect în directorul corect. Ordin.

Codul meu actual este:

# Un set de discuri de ignorat de la partiţionare şi formatare; Utilizați țeava pentru a separa (poate acționa ca SAU în acest caz)
BLACKLIST="/dev/nvme0"

# Obține o listă de discuri le filtrează pe cele enumerate, apoi le caută pe altele
DEVS=($(ls -1 /dev/nvme*|egrep -v „${BLACKLIST}”|egrep „[0-9]n[0-9]$”))

Am găsit: https://linuxhint.com/list_disks_ubuntu/ Dar nu îmi spune cum să le obțin într-o matrice simplă și nu pot sorta după dimensiune cu această comandă.

Am incercat:

ls -1 /dev/nvme*|egrep -v „${BLACKLIST}”|egrep „[0-9]n[0-9]$” | fel

și

ls -1 /dev/nvme*|egrep -v „${BLACKLIST}”|egrep „[0-9]n[0-9]$” | sortare -r

dar (cum era de așteptat) acest lucru nu se sortează în funcție de dimensiune. Se sortează după numele HDD-ului care este transmis:

/dev/nvme1n1
/dev/nvme2n1 

și

/dev/nvme2n1
/dev/nvme1n1

Respectiv. Este exact ceea ce vreau, doar sortat după dimensiune, nu după nume.

Alte google nu au găsit un ajutor util pentru extragerea dimensiunii și sortarea valorii principale după dimensiune. Rulez o instalare minimă Ubuntu 18.04 deoarece acesta este un server web. Am acces la df și fdisk și încerc să instalez mai multe pachete, dar mă voi gândi dacă se dovedește a fi semnificativ mai ușor.

Puncte:1
drapel hr

Nu înțeleg cu adevărat ce încerci să faci (sau de ce), dar ai putea lua în considerare utilizarea lsblk cu al ei; cu al lui --json specificatorul formatului de ieșire, canalizarea rezultatului către jq unde puteți implementa filtrarea/sortarea personalizată.

De exemplu:

$ lsblk -b --json | jq -r '
    .blockdevices[] | select(.name == "sda") |
    [ .copii[] | select(.mountpoint == null și .name != "sda4") ] | sortare_după(.dimensiune) | .[].Nume
'
sda1
sda2
Puncte:0
drapel cn

Cred că vrei systemd.mount pentru asta. Adăugând x-systemd.requires-mounts-for= pentru dumneavoastră fstab intrarea creează o unitate de montare tranzitorie:

# fstab(5):
/dev/loop1 /opt/mnt ext4 noauto 0 0  
/dev/loop2 /opt/mnt/data ext4 noauto,x-systemd.requires-mounts-for=/opt/mnt 0 0

pe care îl puteți porni și opri ca sistem systemd.unit:

systemctl start opt-mnt-data.mount

aceasta va monta sistemul de fișiere într-o anumită ordine.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.