Unter Linux sind Blockgeräte spezielle Dateien, die sich auf ein Gerät beziehen oder es darstellen (was alles sein kann, von einer Festplatte bis zu einem USB-Laufwerk). Natürlich gibt es Befehlszeilentools, die Ihnen bei Ihrer Arbeit im Zusammenhang mit Blockgeräten helfen. Ein solches Dienstprogramm ist lsblk .
In diesem Tutorial werden wir diesen Befehl anhand einiger leicht verständlicher Beispiele besprechen. Aber bevor wir das tun, ist es erwähnenswert, dass alle hier erwähnten Beispiele auf einem Ubuntu 18.04 LTS-Rechner getestet wurden.
Linux-lsblk-Befehl
Der Befehl lsblk in Linux listet Blockgeräte auf. Es folgt die Syntax:
lsblk [options] [device...]
Und so erklärt es die Manpage des Tools:
lsblk lists information about all available or the specified block
devices. The lsblk command reads the sysfs filesystem and udev db to
gather information. If the udev db is not available or lsblk is com?
piled without udev support than it tries to read LABELs, UUIDs and
filesystem types from the block device. In this case root permissions
are necessary.
The command prints all block devices (except RAM disks) in a tree-like
format by default. Use lsblk --help to get a list of all available
columns.
The default output, as well as the default output from options like
--fs and --topology, is subject to change. So whenever possible, you
should avoid using default outputs in your scripts. Always explicitly
define expected columns by using --output columns-list in environments
where a stable output is required.
Note that lsblk might be executed in time when udev does not have all
information about recently added or modified devices yet. In this case
it is recommended to use udevadm settle before lsblk to synchronize
with udev
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine bessere Vorstellung davon vermitteln sollen, wie lsblk funktioniert.
Q1. Wie verwende ich den Befehl lsblk?
Die grundlegende Verwendung ist ziemlich einfach - führen Sie einfach 'lsblk' ohne jegliche Option aus.
lsblk
Es folgt die Ausgabe, die dieser Befehl auf meinem System erzeugt:
Die erste Spalte listet Gerätenamen auf, gefolgt von entsprechenden Major- und Minor-Gerätenummern, ob das Gerät entfernbar ist oder nicht (1, falls dies der Fall ist), Größe des Geräts, ob das Gerät schreibgeschützt ist oder nicht, Gerätetyp (Disk , Partition usw.) und schließlich den Einhängepunkt des Geräts (falls verfügbar).
Q2. Wie kann man lsblk dazu bringen, auch leere Geräte anzuzeigen?
Standardmäßig zeigt der Befehl lsblk nur nicht leere Geräte an. Sie können das Tool jedoch auch dazu zwingen, leere Geräte anzuzeigen. Verwenden Sie dazu die Befehlszeilenoption -a.
lsblk -a
In meinem Fall erzeugte der obige Befehl beispielsweise die folgende Ausgabe:
Die Zeile 'Schleife 13' ist in diesem Fall neu hinzugekommen.
Q3. Wie kann man lsblk dazu bringen, Größeninformationen in Bytes auszugeben?
Standardmäßig gibt lsblk Größeninformationen in menschenlesbarer Form aus. Obwohl dies gut ist, kann es vorkommen, dass Sie die Größe in Bytes benötigen. Gut ist, dass es eine Option (-b) gibt, die dies tut.
lsblk -b
Es folgt eine Beispielausgabe:
Sie können also sehen, dass die Spalte „Größe“ jetzt Einträge in Bytes enthält.
Q4. Wie erstelle ich ein lsblk-Druckzonenmodell für jedes Gerät?
Dies können Sie mit der Befehlszeilenoption -z tun.
lsblk -z
Hier ist zum Beispiel die Ausgabe des oben genannten Befehls, der auf meinem System erzeugt wurde:
NAME ZONED
loop0 none
loop1 none
loop2 none
loop3 none
loop4 none
loop5 none
loop6 none
loop7 none
loop8 none
loop9 none
loop10 none
loop11 none
loop12 none
sda none
??sda1 none
??sda2 none
??sda3 none
??sda4 none
??sda5 none
??sda6 none
??sda7 none
??sda8 none
sdb none
??sdb1 none
??sdb2 none
F5. Wie kann man lsblk-Einträge für Slaves überspringen lassen?
Dazu müssen Sie die Befehlszeilenoption -d verwenden, die lsblk anweist, keine Informationen zu Haltergeräten oder Slaves zu drucken.
lsblk -d
Hier ist eine Beispielausgabe:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 3.3M 1 loop /snap/gnome-system-monitor/36
loop1 7:1 0 86.6M 1 loop /snap/core/4486
loop2 7:2 0 140M 1 loop /snap/gnome-3-26-1604/59
loop3 7:3 0 21M 1 loop /snap/gnome-logs/25
loop4 7:4 0 87M 1 loop /snap/core/5145
loop5 7:5 0 1.6M 1 loop /snap/gnome-calculator/154
loop6 7:6 0 2.3M 1 loop /snap/gnome-calculator/180
loop7 7:7 0 14.5M 1 loop /snap/gnome-logs/37
loop8 7:8 0 3.7M 1 loop /snap/gnome-system-monitor/51
loop9 7:9 0 12.2M 1 loop /snap/gnome-characters/69
loop10 7:10 0 13M 1 loop /snap/gnome-characters/103
loop11 7:11 0 140.9M 1 loop /snap/gnome-3-26-1604/70
loop12 7:12 0 86.9M 1 loop /snap/core/4917
sda 8:0 0 931.5G 0 disk
sdb 8:16 1 14.7G 0 disk
Wenn Sie die in früheren Fällen erzeugte Ausgabe vergleichen, sehen Sie, dass in diesem Fall keine Slave-Einträge in der Ausgabe erzeugt werden.
F6. Wie kann man lsblk dazu bringen, ASCII-Zeichen für die Baumformatierung zu verwenden?
Standardmäßig ist die Art der Baumformatierung, die lsblk verwendet, in vielen Fällen möglicherweise nicht benutzerfreundlich. Beispielsweise kann das Kopieren und Einfügen zu Formatierungsproblemen führen. Wenn Sie also möchten, können Sie das Tool zwingen, ASCII-Zeichen für die Baumformatierung zu verwenden, was Sie mit der Befehlszeilenoption -i tun können.
lsblk -i
Hier ist eine Beispielausgabe:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 3.3M 1 loop /snap/gnome-system-monitor/36
loop1 7:1 0 86.6M 1 loop /snap/core/4486
loop2 7:2 0 140M 1 loop /snap/gnome-3-26-1604/59
loop3 7:3 0 21M 1 loop /snap/gnome-logs/25
loop4 7:4 0 87M 1 loop /snap/core/5145
loop5 7:5 0 1.6M 1 loop /snap/gnome-calculator/154
loop6 7:6 0 2.3M 1 loop /snap/gnome-calculator/180
loop7 7:7 0 14.5M 1 loop /snap/gnome-logs/37
loop8 7:8 0 3.7M 1 loop /snap/gnome-system-monitor/51
loop9 7:9 0 12.2M 1 loop /snap/gnome-characters/69
loop10 7:10 0 13M 1 loop /snap/gnome-characters/103
loop11 7:11 0 140.9M 1 loop /snap/gnome-3-26-1604/70
loop12 7:12 0 86.9M 1 loop /snap/core/4917
sda 8:0 0 931.5G 0 disk
|-sda1 8:1 0 100M 0 part
|-sda2 8:2 0 52.5G 0 part
|-sda3 8:3 0 293G 0 part
|-sda4 8:4 0 1K 0 part
|-sda5 8:5 0 93.4G 0 part
|-sda6 8:6 0 293G 0 part
|-sda7 8:7 0 3.9G 0 part
`-sda8 8:8 0 195.8G 0 part /
sdb 8:16 1 14.7G 0 disk
|-sdb1 8:17 1 200M 0 part
`-sdb2 8:18 1 14.5G 0 part
Sie können also sehen, dass die Ausgabe (siehe sda-Einträge) jetzt ASCII-Zeichen in Baumformatierung enthält.
F7. Wie kann man lsblk dazu bringen, Informationen über Gerätebesitzer, Gruppe und Modus anzuzeigen?
Dies kann mit der Befehlszeilenoption -m erreicht werden.
lsblk -m
Hier ist die Ausgabe, die der oben genannte Befehl in meinem Fall erzeugt hat:
Q8. Wie lässt man lsblk ausgewählte Spalten ausgeben?
Wenn Sie möchten, können Sie lsblk auch anweisen, nur ausgewählte Spalten auszugeben, was Sie mit der Befehlszeilenoption -o tun können (wobei Sie eine durch Kommas getrennte Liste von Spalten übergeben müssen, die Sie anzeigen möchten).
Zum Beispiel:
lsblk -o NAME,SIZE
Der oben genannte Befehl erzeugte die folgende Ausgabe:
Schlussfolgerung
Wenn Ihre Linux-Arbeit den Zugriff auf Informationen zu Blockgeräten beinhaltet, dann ist lsblk ein Muss für Sie. Hier, in diesem Tutorial, haben wir mehrere Befehlszeilenoptionen besprochen, die dieses Tool bietet. Um mehr über lsblk zu erfahren, besuchen Sie seine Manpage.