Linux lsblk Command Tutorial voor Beginners (8 Voorbeelden)

In Linux zijn block devices speciale bestanden die verwijzen naar of staan voor een apparaat (dat kan van alles zijn, van een harde schijf tot een USB schijf). Er zijn dus natuurlijk commando-regel gereedschappen die je helpen met je blok-apparaten-gerelateerd werk. Eén zo’n hulpmiddel is lsblk.

In deze zelfstudie zullen we dit commando bespreken aan de hand van enkele gemakkelijk te begrijpen voorbeelden. Maar voor we dat doen, is het de moeite waard te vermelden dat alle hier genoemde voorbeelden getest zijn op een Ubuntu 18.04 LTS machine.

Linux lsblk commando

Het lsblk commando in Linux geeft een lijst van blok-apparaten. Hierna volgt de syntaxis ervan:

lsblk [options] [device...]

En hier is hoe de man pagina van het gereedschap het uitlegt:

       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

Hieronder volgen enkele vraag-antwoord-achtige voorbeelden die je een beter idee moeten geven over hoe lsblk werkt.

Q1. Hoe gebruik je het lsblk commando?

Het basisgebruik is vrij eenvoudig – voer gewoon ‘lsblk’ uit sans enige optie.

lsblk

Hieronder volgt de uitvoer die dit commando op mijn systeem opleverde:

Hoe het lsblk commando te gebruiken

In de eerste kolom staan apparaatnamen, gevolgd door overeenkomstige major en minor apparaatnummers, of het apparaat verwijderbaar is of niet (1 in het geval dat het dat is), de grootte van het apparaat, of het apparaat alleen lezen is of niet, het type apparaat (schijf, partitie, enz.), en tenslotte het koppelpunt van het apparaat (indien beschikbaar).

Q2. Hoe kan ik lsblk ook lege apparaten laten weergeven?

Standaard geeft het lsblk commando alleen niet-lege apparaten weer. Je kunt het gereedschap echter dwingen om ook lege apparaten weer te geven. Gebruik hiervoor de -a commandoregeloptie.

lsblk -a

In mijn geval leverde het bovenstaande commando bijvoorbeeld de volgende uitvoer op:

Hoe kun je lsblk ook lege apparaten laten weergeven

De rij ‘loop 13’ is de nieuwe toevoeging in dit geval.

Q3. Hoe kan ik lsblk grootte-informatie in bytes laten afdrukken?

Standaard drukt lsblk grootte-informatie af in menselijk leesbare vorm. Hoewel dit goed is, zijn er momenten waarop je grootte in bytes nodig kunt hebben. Het goede is dat er een optie is (-b) die dit doet.

lsblk -b

Hieronder volgt een voorbeeld uitvoer:

Hoe lsblk grootte-informatie in bytes te laten afdrukken

Zo zie je dat de kolom ‘Size’ nu vermeldingen in bytes bevat.

Q4. Hoe kun je lsblk voor elk apparaat een zonemodel laten afdrukken?

Dit kun je doen met de -z commandoregeloptie.

lsblk -z

Hier is bijvoorbeeld de uitvoer die het eerder genoemde commando op mijn systeem produceerde:

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

Q5. Hoe kan ik lsblk entries voor slaven laten overslaan?

Hiervoor moet je de -d commandolijnoptie gebruiken, die lsblk vertelt geen informatie af te drukken die te maken heeft met houders of slaven.

lsblk -d

Hier zie je een voorbeeld uitvoer:

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

Als je vergelijkt met de uitvoer die in eerdere gevallen werd geproduceerd, zie je dat in dit geval geen slave entries in de uitvoer worden geproduceerd.

Q6. Hoe kan ik lsblk ascii tekens laten gebruiken voor de boomformattering?

Standaard kan het type boomopmaak dat lsblk gebruikt in veel gevallen niet gebruiksvriendelijk zijn. Zo kan het kopiëren-plakken ervan opmaakproblemen veroorzaken. Als je wilt, kun je het gereedschap dus dwingen om ascii tekens te gebruiken voor boomopmaak, iets wat je kunt doen met de -i commandolijn optie.

lsblk -i

Hier is een voorbeeld uitvoer:

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

Zo zie je dat de uitvoer (zie sda entries) nu ASCII tekens bevat in de boomopmaak.

Q7. Hoe kan ik lsblk info over eigenaar, groep en modus van het apparaat laten weergeven?

Dat kan met de -m commandoregeloptie.

lsblk -m

Hier is de uitvoer die het eerder genoemde commando in mijn geval produceerde:

Hoe kun je lsblk info laten tonen over toesteleigenaar, groep, en modus

Q8. Hoe kan ik lsblk uitvoer laten geven van geselecteerde kolommen?

Als je wilt, kun je lsblk ook opdracht geven alleen geselecteerde kolommen uit te voeren, iets wat je kunt doen met de -o commandolijnoptie (die vereist dat je een door komma’s gescheiden lijst doorgeeft van kolommen die je wilt weergeven).

Voorbeeld:

lsblk -o NAME,SIZE

Het eerder genoemde commando gaf de volgende uitvoer:

Hoe maak je van lsblk uitvoer geselecteerde kolommen

Conclusie

Als je Linux werk betrekking heeft op het opvragen van informatie met betrekking tot blokvormige apparaten, dan is lsblk een must know commando voor je. Hier, in deze handleiding, hebben we verschillende commandoregel opties besproken die dit hulpmiddel biedt. Om meer over lsblk te weten te komen, ga je naar zijn man pagina.