Einführung in den Befehl LSBLK

Einführung in den Befehl LSBLK

LSBLK ist ein sehr schönes Dienstprogramm, das standardmäßig auf praktisch allen Linux -Verteilungen installiert ist. In diesem Artikel werden wir sehen, wie es funktioniert und wie es verwendet wird.

In diesem Tutorial lernen Sie:

  • So verwenden Sie das LSBLK -Dienstprogramm, um Informationen über Blockgeräte abzurufen
  • Was bedeutet die Spalten, die im Standard -Dienstprogrammausgang angezeigt werden?
  • So geben Sie die angezeigten Spalten an und formatieren Sie die Ausgabe als JSON oder als Liste
  • So zeigen Sie Informationen zu einem bestimmten Gerät an.

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilung unabhängig
Software LSBLK
Andere Keine weiteren Anforderungen erforderlich
Konventionen # - Erfordert, dass gegebene Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden können sudo Befehl
US

LSBLK Basisnutzung

In seiner grundlegendsten Verwendung erzeugt das LSBLK-Dienstprogramm beim Aufrufen ohne spezifische Option oder Argument einen baumartigen Ausgang, einschließlich aller an das Betriebssystem angeschlossenen Blockgeräte. Hier ist ein Beispiel:

Name Maj: min Rm Größe RO Typ Mountpoint SDA 8: 0 0 232.9g 0 Festplatte ├─sda1 8: 1 0 1g 0 Teil /Start └─sda2 8: 2 0 231.9g 0 Teil └─luks-5794A0B4-7082-4769-B86B-BD27A544361A 253: 0 0 231.9g 0 Krypta 253: 4 0 170g 0 LVM /MNT /Daten SR0 11: 0 1 1024m 0 ROM ZRAM0 252: 0 0 2.8G 0 Festplatte [Swap] 


Die baumartige Struktur ist sehr nützlich, um Geräte und ihre Partitionen zu identifizieren, und wie sie auf dem Gerät strukturiert sind. In der obigen Ausgabe können wir zum Beispiel sehen, dass es sich um zwei Partitionen auf der SDA Gerät: SDA1 Und SDA2.

Wie wir beobachten können, ist ersterer eine „Standard“ -Tartition: Wir können identifizieren, weil wir uns den entsprechenden Wert in der ansehen können TYP Spalte, die in diesem Fall ist Teil. Wir können auch beobachten, dass die Partition derzeit bei montiert ist /Stiefel.

Letzteres, SDA2, ist auch eine Standardpartition, aber wie wir aus dem Diagramm leicht verstehen können, hat es einige „Kinder“ oder „Sklaven“ -Geräte. Der erste ist a Luks Container identifiziert durch LUKS-5794A0B4-7082-4769-B86B-BD27A544361A (Dies ist der Geräte -Mapper -Name). Das auf einem LVM auf Luks -Setup installierte System ist der Luks -Behälter selbst als physisches Volumen und enthält einige logische Volumina, die auf verschiedenen Teilen des Systems montiert sind.

In der ersten Spalte der Ausgabe können wir Informationen über das Gerät sehen NAME sind bereitgestellt, das ist ziemlich leicht zu verstehen. Bitte beachten Sie, dass nur der Gerätename standardmäßig angezeigt wird und nicht der vollständige Pfad: Damit er angezeigt werden kann, sollten wir die verwenden -P Möglichkeit.

Die zweite Spalte heißt Maj: Min: Dies sind die Zahlen, die vom Kernel verwendet werden, um die Geräte intern zu identifizieren, wobei die erste Nummer den Gerätetyp angibt ((8 zum Beispiel wird für SCSI -Scheiben verwendet).

Die dritte Spalte, die in der Standard -LSBLK -Ausgabe angezeigt wird, ist Rm: Wenn wir uns diese Spalte ansehen, können wir sehen, ob das Gerät abnehmbar ist (der Wert wäre 1), oder nicht. Im obigen Ausgang ist nur ein Gerät als abnehmbar markiert, SR0, welches ist
ein optischer Antrieb.

Der Umfang der vierten Spalte ist leicht mit seinem Namen zu identifizieren: GRÖSSE. Darin wird die Größe der entsprechenden Geräte angezeigt.

Die fünfte Spalte ist Ro: Diese Spalte wird verwendet, um festzustellen, ob das Gerät schreibgeschützt ist oder nicht. Wie Rm Säule werden die Werte in der Spalte als Boolesche verwendet, also 1 bedeutet, dass das Gerät schreibgeschützt ist.

Die sechste Spalte der Ausgabe ist TYP: Wie bereits erwähnt, wird diese Spalte verwendet, um den Gerät oder den Partitionstyp zu identifizieren. Wenn wir beispielsweise die Ausgabe des Befehls beobachten, können wir sehen, dass die Krypta Der Wert wird verwendet, um den Luks -Container während zu identifizieren LVM wird verwendet, um logische Volumengeräte zu identifizieren, und Scheibe wird für rohe Blockgeräte wie verwendet SDA.

Die siebte und letzte Spalte ist EINHÄNGEPUNKT: Diese Spalte enthält Informationen zum aktuellen Mountpoint jedes Partition/Blockgeräts.

Sammeln von Informationen über ein bestimmtes Gerät

Wie wir oben gesehen haben, wenn wir das aufrufen LSBLK Befehl ohne andere Argumente oder Optionen Wir erhalten Informationen über die derzeit an das System angehängten Geräte. Was ist, wenn wir Informationen über ein bestimmtes Gerät erhalten möchten??

Wir müssen nur das Gerät übergeben, über das wir Informationen als Argument des LSBLK -Befehls sammeln möchten. Zum Beispiel, wenn wir das nur inspizieren wollen SDA1 Gerät, wir würden ausführen:

$ lsblk /dev /sda1 

Beachten Sie, dass wir den vollständigen Pfad des Geräts angegeben haben und nicht nur seinen Namen. Die Ausgabe, die aus dem obigen Befehl erzeugt wird, wie man es erwarten würde, ist Folgendes:

Name Maj: min RM -Größe RO -Typ Mountpoint SDA1 8: 1 0 1G 0 Teil /Start 

Angabe der Spalten, die im LSBLK -Ausgang angezeigt werden sollen

Wir haben bereits gesehen. Dies sind jedoch nur eine kleine Untergruppe der verfügbaren. Um die Informationen anzugeben, die wir in die Ausgabe enthalten sein möchten, müssen wir die verwenden Option (kurz für --Ausgang) und geben Sie eine von Kommas getrennte Liste der Spalten an, die wir enthalten möchten. Damit die Ausgabe beispielsweise nur Informationen zu Gerätenamen und Dateisystemtypen enthält, können wir ausführen:

$ lsblk -o Name, fstype 


Der obige Befehl würde die folgende Ausgabe zurückgeben:

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 

Für eine vollständige Liste der verfügbaren Spalten und eine Erläuterung der von ihnen bereitgestellten Informationen können wir das LSBLK -Dienstprogramm mit dem aufrufen --Hilfe Möglichkeit:

Verfügbare Ausgabespalten: Name Gerätename Kname Interner Kernel Gerätename Pfad des Geräteknotens Maj: min Major: Minor Gerätenummer FSAvail Dateisystemgröße verfügbar fsSize -Dateisystemgröße Fstype -Dateisystem Typ FSUTED Dateisystem Größe verwendet FSUSE% Dateisystem. Das Gerät besteht -Nur Geräte RM Abnehmbares Geräte HotPlug Wenovable oder HotPlug Device (USB, PCMCIA,…) Model Device Identifier Serienplatte Seriennummer Größe des Gerätezustands Status des Geräte Eigentümer Benutzername Gruppenname Modus Geräte Node-Berechtigungen Ausrichtungsausrichtung Offset min-i-minimaler E/A-Größe opt-io optimaler E/A-Größe Phy- SEC Physical Sektor Größe Log-SEC Logischer Sektor Größe Rotationsgeräte Schedule Scheduller Name RQ-Size-Anforderungswarteschlange Größe Typ Geräte Typ Disc-Aln-Ausrichtung aus Alignment Offset Disc-Gran-Gran-Granularität Disc-Max MAX-Bytes Disc-Null Zeros entwerfen Zeros Entsätte Zellen Daten WSAME Schreiben Sie gleiche Max-Bytes wwn eindeutig Speicherkenner Rand Fügt Zufälligkeit PKNAME Interner übergeordnete Kernel Gerätename HCTL Host: Kanal: Ziel: Lun für SCSI-Tran-Gerätetransporttyp Subsystem De-Dukly-Kette von Subsystemen Revisionsanbieter Vendor Zonen Zonenzonenmodell Dax Dax DAX-fähiges Gerät 

Einige Optionen können auch verwendet werden, die einen vordefinierten Spaltensatz verstehen: Aufrufen LSBLK mit dem -F (oder --fs) Die Option ist beispielsweise wie das Aufrufen, indem Sie die angeben EIN ICH,Fstype,ETIKETT,Uuid,Fsavail,Fsuse%,EINHÄNGEPUNKT
Säulen.

Ändern des Ausgangsformats

In den vorherigen Beispielen haben wir gesehen, wie die Standardausgabe, die durch die Aufruf des LSBLK-Befehls erzeugt wird. Es gibt jedoch eine Reihe von Optionen, um zu ändern, wie die Ausgabe angezeigt wird.

Zunächst können wir die verwenden -D Option (kurz für --Nodeps) nur übergeordnete Geräte anzeigen. Hier ist das Ergebnis des Aufrufens von LSBLK mit dieser Option:

Name Maj: min Rm Größe RO Typ Mountpoint SDA 8: 0 0 232.9g 0 Festplatte SR0 11: 0 1 1024m 0 ROM ZRAM0 252: 0 0 2.8G 0 Festplatte [Swap] 

Eine andere, sehr interessante Option ist -J, oder --JSON: damit können wir Informationen über die Blockgeräte und ihre Beziehungen in der erhalten JSON Format:

$ lsblk -j "blockDevices": ["name": "sda", "maj: min": "8: 0", "rm": false, "Größe": "232.9g "," Ro ": Falsch," Typ ":" Festplatte "," Mountpoint ": Null," Kinder ": [" Name ":" Sda1 "," Maj: min ":" 8: 1 ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "," RM ": Falsch," Größe ":" 1g "," Ro ": Falsch," Typ ":" Teil "," Mountpoint ":"/boot ", " Name ":" Sda2 "," Maj: min ":" 8: 2 "," RM ": Falsch," Größe ":" 231.9g "," Ro ": Falsch," Typ ":" Teil "," Mountpoint ": Null," Kinder ": [" Name ":" Luks-5794a0b4-7082-4769-B86B-BD27A544361a "," Maj: "Maj: min ":" 253: 0 "," RM ": Falsch," Größe ":" 231.9g "," Ro ": Falsch," Typ ":" Crypt "," Mountpoint ": Null," Kinder ": [" Name ":" Fingolfin_Vg-Root_LV "," Maj: min ":" 253: 1 " , "RM": Falsch, "Größe": "35G", "Ro": Falsch, "Typ": "Lvm", "Mountpoint": "/", "Name": "Fingolfin_Vg-Swap_LV", ",", ",", ",", ",", ",", "," maj: min ":" 253: 2 "," rm ": false," Größe ":" 6g "," ro ": false," Typ ":" Lvm "," Mountpoint ":" [Swap] ", "Name": "fingolfin_vg-home_lv", "maj: min": "253: 3", "rm": false, "Größe": "15g", "ro": false, "Typ": "Lvm" , "Mountpoint": "/home", "Name": "Fingolfin_Vg-data_lv", "Maj: min": "253: 4", "RM": Falsch, "Größe": "170g", "Ro Ro ": false," Typ ":" Lvm "," Mountpoint ":"/mnt/data "]]], " Name ":" sr0 "," maj: min ":" 11: 0 " , "rm": wahr, "Größe": "1024m", "Ro": Falsch, "Typ": "Rom", "Mountpoint": null, "Name": "Zram0", "Maj: min" : "252: 0", "RM": Falsch, "Größe": "2.8g "," Ro ": Falsch," Typ ":" Festplatte "," Mountpoint ":" [Swap] "] 


Diese Art von Ausgabe ist unter den anderen Dingen sehr nützlich, da sie leicht mit vollständigeren Programmiersprachen wie Python analysiert werden kann.

Eine andere Möglichkeit, die angezeigte Ausgabe zu ändern, besteht darin, die zu verwenden -l oder --Liste Option, die eine Ausgabe in Form einer Liste erzeugt. Wenn diese Ausgabe jedoch ausgewählt wird, werden die Beziehungen zwischen Geräten ausgelassen, da eine Liste durch ihre
Die Natur ist "flach":

$ lsblk -l Name Maj: min RM -Größe RO -Typ Mountpoint SDA 8: 0 0 232.9g 0 Disk SDA1 8: 1 0 1G 0 Teil /Boot SDA2 8: 2 0 231.9g 0 Teil SR0 11: 0 1 1024m 0 ROM ZRAM0 252: 0 0 2.8G 0 Festplatte [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 / homes home fingolfindin_vg-data_lv 253: 4 0 170g 0 lvm / data_lv 253: 4 0 170g 0 Mnt/Daten 

Um die Ausgabe in „Paaren“ zu organisieren, können wir stattdessen die verwenden -P oder --Paare Möglichkeit:

$ lsblk -pairs name = "sda" maj: min = "8: 0" rm = "0" size = "232.9g "ro =" 0 "type =" disk "name =" sda2 "maj: min =" 8: 2 "rm =" 0 "size =" 231.9g "Ro =" 0 "Typ =" Teil "name =" luks-5794a0b4-7082-4769-B86B-BD27A544361a "Maj: min =" 253: 0 "rm =" 0 "size =" 231.9g "Ro =" 0 "Typ =" Crypt "name =" fingolfin_vg-root_lv "maj: min =" 253: 1 "rm =" 0 "size =" 35g "Ro =" 0 "Typ =" LVM "Mountpoint = "/" Name = "fingolfin_vg-data_lv" maj: min = "253: 4" rm = "0" size = "170g" ro = "0" type = "lvm" montoint = "/mnt/data" name = " fingolfin_vg-swap_lv "maj: min =" 253: 2 "rm =" 0 "size =" 6g "ro =" 0 "type =" lvm "montpoint =" [swap] "name =" fingolfin_vg-home_lv "maj: min = "253: 3" rm = "0" size = "15g" ro = "0" type = "lvm" montpoint = "/home" name = "sda1" maj: min = "8: 1" rm = "0 0 "Size =" 1g "ro =" 0 "type =" part "montoint ="/boot "name =" sr0 "maj: min =" 11: 0 "rm =" 1 "size =" 1024m "ro =" 0 0 0 0 "Type =" rom "name =" zram0 "maj: min =" 252: 0 "rm =" 0 "size =" 2.8G "Ro =" 0 "Typ =" Disk "montoppoint =" [Swap] " 

Eine weitere sehr wichtige Option, die besonders in Skripten nützlich ist, ist -N, Welches ist der kurze für --No-Headings. Diese Option verändert die Ausgabe so, dass die Header -Linie und der Name der Spalten weggelassen werden. Ein konkreter Anwendungsfall wäre der folgende. Nehmen wir an, dass wir in einem Skript den Dateisystemtyp einer bestimmten Partition abrufen möchten (Angenommen, es handelt sich um SDA1) und "es in einer Variablen speichern", könnten wir schreiben:

$ fsys = "$ (LSBLK --NoHeadings -o fstype /dev /sda1)" 

Schlussfolgerungen

In diesem Tutorial haben wir gelernt, den Befehl LSBLK zu kennen und wie es verwendet werden kann, um Informationen über Blockgeräte abzurufen, die dem System und ihren Beziehungen angehängt sind. Wir haben die Bedeutung der Standardspalten gelernt, die angezeigt werden, wenn das Dienstprogramm ohne Option oder Argumente aufgerufen wird. Wir haben gesehen

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • Wie man mit der Woocommerce -REST -API mit Python arbeitet
  • Mastering -Bash -Skriptschleifen beherrschen
  • Big Data Manipulation zum Spaß und Gewinn Teil 3
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Hung Linux System? Wie man zur Befehlszeile entkommt und…
  • Wie man GPT -Partitionstabellen mit GDISK und SGDISK manipuliert…
  • Verschachtelte Schleifen in Bash -Skripten