Sprawdź, czy określony dysk zewnętrzny jest podłączony

9

Jak mogę sprawdzić za pomocą polecenia powłoki, czy określony dysk zewnętrzny jest podłączony? (według etykiety lub identyfikatora urządzenia)

Jeno
źródło

Odpowiedzi:

9

Aby sprawdzić, czy urządzenie jest podłączone specyficzny można korzystać grepz -qopcji, aby szukać wyjścia lsusbalbo lsblk, na przykład

uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
lsblk -f | grep -wq $uuid && echo yes || echo no

devicename="some Inc. Keyboard"
lsusb | grep -q "$devicename" && echo yes || echo no

lub z if:

uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
  echo yes
else
  echo no
fi

Oba mogą być używane bez względu na to, czy urządzenie jest zamontowane.

deser
źródło
Dla zamontowanych partycji - lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
N0rbert,
Oczywiście użyłem UUID, który podałeś :)
N0rbert,
9

/dev/disk/zawiera następujące katalogi, które zawierają symboliczne łącze do rzeczywistych urządzeń. Te linki są dynamicznie tworzone i usuwane przez udev, więc są zawsze aktualne:

  • by-id
  • by-partlabel
  • częściowy
  • przydrożna
  • byuuid

Dlatego sprawdzanie istnienia dowiązania symbolicznego zużyje mniej zasobów.

Oto przykład testowania obecności dysku przy użyciu jego numeru seryjnego:

test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no

W moim skrypcie kopii zapasowej nawet nie sprawdzam obecności dysku, sprawdzam tylko wynik mountpolecenia w następujący sposób:

mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
pim
źródło
2

lsusb do wyświetlania listy podłączonych urządzeń USB, jeśli dysk zewnętrzny jest podłączony przez interfejs USB.

lsblk -f aby wyświetlić listę urządzeń blokowych, UUID i ich punktów instalacji, ponieważ dysk zewnętrzny jest urządzeniem blokowym.

arryph
źródło
1
@ N0rbert dlaczego musisz -fwymienić punkty montowania? Domyślne wyjście i tak je wyświetla
mur
0

findfsjest do tego stworzony. Możesz wyszukiwać według:

  • Etykieta FS

    findfs LABEL="Ubuntu" &>/dev/null
    
  • FS uuid

    findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
    
  • Etykieta GPT

    findfs PARTLABEL="EFI system partition" &>/dev/null
    
  • UUID GPT

    findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
    

W wyszukiwaniu rozróżniana jest wielkość liter. Jeśli pasuje wiele partycji, wyświetlana jest tylko ostatnia.

użytkownik285259
źródło