Wprowadzenie do polecenia LSBLK

Wprowadzenie do polecenia LSBLK

LSBLK to bardzo ładne narzędzie zainstalowane domyślnie na praktycznie wszystkie dystrybucje Linux: możemy go użyć do pobrania szerokiego zakresu informacji o wszystkich urządzeniach blokowych dołączonych do systemu. W tym artykule zobaczymy, jak to działa i jak go używać.

W tym samouczku się nauczysz:

  • Jak korzystać z narzędzia LSBLK do pobierania informacji o urządzeniach blokowych
  • Jakie jest znaczenie kolumn wyświetlanych w domyślnym wyjściu narzędziowym
  • Jak określić kolumny do wyświetlania i sformatować wyjście jako JSON lub jako listę
  • Jak wyświetlać informacje o określonym urządzeniu.

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie lsblk
Inny Żadne inne wymagania
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

LSBLK Basic Użycie

W najbardziej podstawowym użyciu, przy wywołaniu bez żadnej konkretnej opcji lub argumentu, narzędzie LSBLK wytworzy wyjście podobne do drzewa, w tym wszystkie urządzenia blokowe podłączone do systemu operacyjnego. Oto przykład:

Nazwa MAJ: Min Rm Rozmiar RO Typ Mountpoint SDA 8: 0 0 232.9G 0 dysk ├─SDA1 8: 1 0 1G 0 część /rozruch └tsda2 8: 2 0 231.9G 0 Część └─luks-5794A0B4-7082-4769-B86B-BD27A544361A 253: 0 0 231.9G 0 Crypt ├─fingolfin_vg-root_lv 253: 1 0 35G 0 lvm / ├─fingolfin_vg-swap_lv 253: 2 0 6g 0 lvm [swap] ├─fingolfin_vg-home_lv 253: 3 0 15g 0 lvm / home └─fingolfin_vg 253: 4 0 170G 0 LVM /MNT /DATA SR0 11: 0 1 1024M 0 ROM ZRAM0 252: 0 0 2.8G 0 Dysk [swap] 


Struktura przypominająca drzewo jest bardzo przydatna do identyfikacji urządzeń i ich partycji, a także ich struktury na urządzeniu. Na powyższym wyjściu, na przykład widzimy, że są dwie partycje na SDA urządzenie: SDA1 I SDA2.

Jak możemy zauważyć, ta pierwsza jest „standardową” partycją: możemy zidentyfikować się jako taka, ponieważ możemy spojrzeć na odpowiednią wartość w TYP kolumna, która w tym przypadku jest część. Możemy również zauważyć, że partycja jest obecnie zamontowana /uruchomić.

Ten ostatni, SDA2, jest również standardową partycją, ale jak możemy łatwo zrozumieć z wykresu, ma niektóre urządzenia „dzieci” lub „niewolnicze”. Pierwszy to Luks pojemnik zidentyfikowany przez LUKS-5794A0B4-7082-4769-B86B-BD27A544361A (To jest nazwa mapera urządzenia). Będąc systemem zainstalowanym na LVM w konfiguracji LUKS, sam pojemnik LUKS jest oznaczony jako objętość fizyczna i zawiera niektóre logiczne objętości zamontowane na różnych częściach systemu.

W pierwszej kolumnie wyjścia możemy zobaczyć informacje o urządzeniu NAZWA są dostarczane, co jest dość łatwe do zrozumienia. Proszę zauważyć, że tylko nazwa urządzenia jest domyślnie wyświetlana, a nie pełna ścieżka: Aby być wyświetlane, powinniśmy użyć -P opcja.

Druga kolumna jest nazwana Maj: Min: Są to liczby używane przez jądro do wewnętrznej identyfikacji urządzeń, pierwsza liczba określa typ urządzenia (8 Na przykład jest używany do dysków SCSI).

Trzecia kolumna wyświetlona w domyślnym wyjściu LSBLK to Rm: Patrząc na tę kolumnę, możemy zobaczyć, czy urządzenie jest zdejmowane (wartość byłaby 1), albo nie. Na powyższym wyjściu tylko jedno urządzenie jest oznaczone jako wyjmowane, SR0, który jest
napęd optyczny.

Zakres czwartej kolumny można łatwo zidentyfikować pod jego nazwą: ROZMIAR. W nim wyświetlany jest rozmiar odpowiednich urządzeń.

Piąta kolumna to Ro: Ta kolumna służy do określenia, czy urządzenie jest tylko odczytu, czy nie. Jak Rm Kolumna, wartości w kolumnie są używane jako logiczne, więc 1 oznacza, że ​​urządzenie jest tylko do odczytu.

Szósta kolumna wyjścia jest TYP: Jak już wspomnialiśmy wcześniej, ta kolumna służy do identyfikacji urządzenia lub typu partycji. Na przykład, obserwując wyjście polecenia, widzimy, że krypta wartość służy do identyfikacji pojemnika LUKS, a LVM służy do identyfikacji logicznych urządzeń woluminowych i dysk jest używany do surowych urządzeń blokowych, takich jak SDA.

Siódma i ostatnia kolumna to Punkt Mountpoint: Ta kolumna zawiera informacje o bieżącym punkcie montażowym każdego urządzenia partycji/bloku.

Zebranie informacji o określonym urządzeniu

Jak widzieliśmy powyżej, jeśli wzywamy lsblk polecenie bez żadnych innych argumentów lub opcji otrzymujemy informacje o obecnie urządzeniach dołączonych do systemu. Co jeśli chcemy uzyskać informacje o określonym urządzeniu?

Wszystko, co musimy zrobić, to przekazać urządzenie, o których chcemy zebrać informacje jako argument polecenia LSBLK. Na przykład, jeśli chcemy tylko sprawdzić SDA1 urządzenie, uruchomilibyśmy:

$ lsblk /dev /sda1 

Zwróć uwagę na pełną ścieżkę urządzenia, a nie tylko jego nazwę. Wyjście wytworzone z powyższego polecenia, jak można się spodziewać, jest następująco:

Nazwa MAJ: Min RM Rozmiar RO Typ Mountpoint SDA1 8: 1 0 1G 0 Part /Boot 

Określanie kolumn, które mają być wyświetlane w wyjściu LSBLK

Widzieliśmy już, jakie są kolumny zawarte domyślnie w wyjściu LSBLK, gdy jest on wywoływany bez żadnej konkretnej opcji. Są to jednak tylko niewielki podzbiór dostępnych. Aby określić informacje, które chcemy być zawarte w wyjściu, musimy użyć -o opcja (skrót --wyjście) i zapewnić rozdzieloną przecinki listę kolumn, które chcemy uwzględnić. Na przykład, aby wyjście zawierały tylko informacje o nazwach urządzeń i typach systemu plików, możemy uruchomić:

$ lsblk -o nazwa, fstype 


Powyższe polecenie zwróci następujące dane wyjściowe:

NAME FSTYPE sda ├─sda1 ext2 └─sda2 crypto_LUKS └─luks-5794a0b4-7082-4769-b86b-bd27a544361a LVM2_member ├─fingolfin_vg-root_lv ext4 ├─fingolfin_vg-swap_lv swap ├─fingolfin_vg-home_lv ext4 └─fingolfin_vg-data_lv ext4 sr0 Zram0 

Aby uzyskać pełną listę dostępnych kolumn i wyjaśnienie dostarczanych informacji, możemy wywołać narzędzie LSBLK z --pomoc opcja:

Dostępne kolumny wyjściowe: nazwa Nazwa urządzenia Kname wewnętrzne jądro Nazwa ścieżka Nazwa ścieżki do urządzenia Węzeł Maja: Min Kierunek: Drobny numer urządzenia FSavail Rozmiar systemu plików FSavail Dostępny system FISSize System plików FSTYPESSUSTEM FSUSUS SIZE FIFESSUN Urządzenie jest zamontowane etykieta etykiety systemu plików UUID system plików UUID PTUUID Identyfikator tabeli partycji (zwykle UUID) PTTYPE TABLE -Nie urządzenie RM Wyjmowane urządzenie HOTPLUG Wyjmowane lub HOTPLUG (USB, PCMCIA,…) Model Identyfikator urządzenia Dysk seryjny Numer seryjny Rozmiar Rozmiar stanu urządzenia Stan Urządzenia Nazwa użytkownika nazwa grupy Nazwa Nazwa Nazwa urządzenia Uprawnienia Wyrównanie Wyrównanie Min-IO Minimalny rozmiar we/wy Opt-IO Optymalny rozmiar we/wy rozmiar PHY- Sec fizyczny rozmiar sektora log-sec-sec rozmiar sektora logicznego rozmiar urządzenia rota rota rotacyjnego harmonogram harmonogramu harmonogramu harmonogramu nazwa RQ-Rozmiar Rozmiar Rozmiar Rozmiar Typ urządzenia Dane WSAME WREP TAMI MAX BYTES WWN Unikalny identyfikator pamięci Rand dodaje losowość PKNAME Wewnętrzne jądro Jądra nadrzędnego Nazwa urządzenia HCTL: Kanał: Kanał: LUN dla SCSI Tran Transport Transport Typ Podsystemy Deplikowane Podsystemy Rev Vendor Vendor Vendor Vendor Urządzenie DEVERDOR Strefed Zone Model Dax Dax Urządzenie dla Dax 

Można również użyć niektórych opcji, które rozumieją wstępnie zdefiniowany zestaw kolumn: wywołujący lsblk z -F (Lub --fs) Na przykład opcja jest jak wywołanie tego, określając AME,Fstype,ETYKIETA,Uuid,FSavail,FSUSE%,Punkt Mountpoint
kolumny.

Modyfikowanie formatu wyjściowego

W poprzednich przykładach widzieliśmy, w jaki sposób domyślne wyjście wytworzone przez wywołanie polecenia LSBLK jest przypominającą drzewo reprezentację urządzeń blokowych przymocowanych do systemu, a ich dziecięcy lub niewolnik. Istnieje jednak mnóstwo opcji, których możemy użyć do modyfikowania sposobu wyświetlania danych wyjściowych.

Po pierwsze, możemy użyć -D opcja (skrót --Nodeps) Aby wyświetlać tylko urządzenia nadrzędne. Oto wynik wywołania LSBLK o wspomnianej opcji:

Nazwa MAJ: Min Rm Rozmiar RO Typ Mountpoint SDA 8: 0 0 232.9G 0 dysk SR0 11: 0 1 1024m 0 Rom ZRAM0 252: 0 0 2.8G 0 Dysk [swap] 

Kolejną, bardzo interesującą opcją jest -J, Lub --JSON: Dzięki temu możemy uzyskać informacje o urządzeniach blokowych i ich relacjach w JSON format:

$ lsblk -J „blockDevices”: [„name”: „sda”, „maj: min”: „8: 0”, „rm”: false, „rozmiar”: „232.9G "," ro ": false,„ typ ”:„ dysk ”,„ Mountpoint ”: null,„ dzieci ”: [„ nazwa ”:„ sda1 ”,„ maj: min ”:„ 8: 1 ”," rm ": false," size ":" 1G "," ro ": false,„ typ ”:„ część ”,„ Mountpoint ”:„/boot ”, „ name ”:„ SDA2 ”,„ Maj: Min „:„ 8: 2 ”,„ rm ”: false,„ rozmiar ”:„ 231.9G "," ro ": false,„ typ ”:„ część ”,„ Mountpoint ”: NULL,„ Dzieci ”: [„ Nazwa ”:„ LUKS-5794A0B4-7082-4769-B86B-BD27A544361A ”,„ MAJ: MAJ: Min „:„ 253: 0 ”,„ rm ”: false,„ rozmiar ”:„ 231.9G ",„ ro ”: false,„ typ ”:„ crypt ”,„ Mountpoint ”: null,„ dzieci ”: [„ nazwa ”:„ fingolfin_vg-root_lv ”,„ maj: min ”:„ 253: 1 ” , „rm”: false, „rozmiar”: „35g”, „ro”: false, „typ”: „lvm”, „Mountpoint”: "/", "name": "fingolfin_vg-swap_lv", " Maj: min ":" 253: 2 "," rm ": false," rozmiar ":„ 6g ”,„ ro ”: false,„ typ ”:„ lvm ”,„ Mountpoint ”:„ [swap] „, „Nazwa”: „fingolfin_vg-home_lv”, „maj: min”: „253: 3”, „rm”: false, „rozmiar”: „15g”, „ro”: false, „typ”: „lvm” , „Mountpoint”: "/home", "name": "fingolfin_vg-data_lv", „maj: min”: „253: 4”, „rm”: false, „rozmiar”: „170g”, „ro” „: false,„ typ ”:„ lvm ”,„ MountPoint ”:„/mnt/data ”]], „ name ”:„ sr0 ”,„ maj: min ”:„ 11: 0 ” , „rm”: true, „rozmiar”: „1024m”, „ro”: false, „typ”: „Rom”, „Mountpoint”: null, „name”: „Zram0”, „Maj: Min” : „252: 0”, „rm”: false, „rozmiar”: „2.8g "," ro ": false," type ":„ dysk ”,„ mounpoint ”:„ [swap] ”] 


Ten rodzaj wyjścia jest bardzo przydatny, między innymi, ponieważ można łatwo przeanalizować z pełniejszymi językami programowania, takimi jak Python.

Innym sposobem zmiany wyświetlonego wyjścia jest użycie -L Lub --lista opcja, która wytwarza wyjście w formie listy. Po wybraniu tego wyjścia relacje między urządzeniami są pomijane, ponieważ lista przez jej
Natura jest „płaska”:

$ lsblk -l Nazwa Maj: Min Rm Rozmiar RO Typ Mountpoint SDA 8: 0 0 232.9G 0 dysk SDA1 8: 1 0 1G 0 część /rozruch SDA2 8: 2 0 231.9G 0 część SR0 11: 0 1 1024M 0 ROM ZRAM0 252: 0 0 2.8G 0 dysk [swap] luks-5794A0B4-7082-4769-B86B-BD27A544361A 253: 0 0 231.9G 0 Crypt Fingolfin_vg-root_lv 253: 1 0 35G 0 lvm / fingolfin_vg-swap_lv 253: 2 0 6g 0 lvm [swap] fingolfin_vg-home_lv 253: 3 0 15G 0 lvm / home fingolfin_vg-data_lv 253: 4 0 170G 0 lvm / / MNT/Data 

Aby zorganizować wyjście w „parach”, możemy użyć -P Lub --pary opcja:

$ lsblk -Pars name = "sda" Maj: min = "8: 0" rm = "0" size = "232.9G "ro =" 0 "type =" dysk "name =" sda2 "Maj: min =" 8: 2 "rm =" 0 "size =" 231.9g "ro =" 0 "type =" część "name =" luks-5794a0b4-7082-4769-b86b-bd27a544361a "Maj: min =" 253: 0 rm = "0" size = "231.9G "ro =" 0 "type =" crypt "name =" fingolfin_vg-root_lv "MAJ: min =" 253: 1 "rm =" 0 "size =" 35G "ro =" 0 "type =" lvm "MountPoint = "/" Name = "fingolfin_vg-data_lv" Maj: min = "253: 4" rm = "0" size = "170g" ro = "0" type = "lvm" MountPoint = "/mnt/data" name = " fingolfin_vg-swap_lv "Maj: min =" 253: 2 "rm =" 0 "size =" 6g "ro =" 0 "type =" lvm "MountPoint =" [swap] "name =" fingolfin_vg-home_lv "Maj: Min = "253: 3" rm = "0" size = "15g" ro = "0" type = "lvm" Mountpoint = "/home" name = "sda1" MAJ: min = "8: 1" rm = "0 0 0 0 0 „Size =” 1g ”ro =" 0 "type =" część "MountPoint ="/boot "name =" sr0 "Maj: min =" 11: 0 "rm =" 1 "size =" 1024m "ro =" 0 0 0 0 0 „Type =" ROM "name =" ZRAM0 "MAJ: min =" 252: 0 "rm =" 0 "size =" 2.8g "ro =" 0 "type =" dysk "Mountpoint =" [swap] " 

Kolejną bardzo ważną opcją, która jest przydatna w użyciu szczególnie w skryptach, jest -N, co jest krótkie --Bez Headings. Ta opcja modyfikuje wyjście, aby linia nagłówka i nazwa kolumn została pominięta. Konkretny przypadek użycia byłby następujący. Załóżmy, że w skrypcie chcemy uzyskać typ systemu plików określonej partycji (załóżmy, że jest SDA1) i „przechowuj” w zmiennej, możemy napisać:

$ fsys = "$ (lsblk --Noheadings -o fstype /dev /sda1)" 

Wnioski

W tym samouczku nauczyliśmy się znać polecenie LSBLK i jak można je wykorzystać do pobierania informacji o urządzeniach blokowych dołączonych do systemu i ich relacji. Nauczyliśmy się znaczenia domyślnych kolumn wyświetlanych, gdy narzędzie jest wywoływane bez żadnej opcji lub argumentów, widzieliśmy, jak uzyskać informacje o określonym urządzeniu, oraz różnych opcjach, których możemy użyć

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak pracować z WooCommerce Rest API z Pythonem
  • Mastering Bash Script Loops
  • Manipulacja Big Data dla zabawy i zysku Część 3
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Hung Linux System? Jak uciec do wiersza poleceń i…
  • Jak manipulować tabelami partycji GPT z gdisk i sgdisk…
  • Zagnieżdżone pętle w skryptach Bash