En Linux, los dispositivos de bloque son archivos especiales que se refieren o representan un dispositivo (que puede ser cualquier cosa, desde un disco duro hasta una unidad USB). Entonces, naturalmente, existen herramientas de línea de comandos que lo ayudan con su trabajo relacionado con dispositivos de bloques. Una vez que dicha utilidad es lsblk .
En este tutorial, discutiremos este comando usando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos mencionados aquí han sido probados en una máquina con Ubuntu 18.04 LTS.
Comando Linux lsblk
El comando lsblk en Linux enumera los dispositivos de bloque. La siguiente es su sintaxis:
lsblk [options] [device...]
Y así es como lo explica la página de manual de la herramienta:
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
Los siguientes son algunos ejemplos de preguntas y respuestas que le darán una mejor idea de cómo funciona lsblk.
P1. ¿Cómo usar el comando lsblk?
El uso básico es bastante simple:simplemente ejecute 'lsblk' sin ninguna opción.
lsblk
El siguiente es el resultado que este comando produjo en mi sistema:
La primera columna enumera los nombres de los dispositivos, seguidos de los números de dispositivos principales y secundarios correspondientes, si el dispositivo es extraíble o no (1 en caso de que lo sea), el tamaño del dispositivo, si el dispositivo es de solo lectura o no, el tipo de dispositivo (disco , partición, etc.) y finalmente el punto de montaje del dispositivo (si está disponible).
P2. ¿Cómo hacer que lsblk también muestre dispositivos vacíos?
De forma predeterminada, el comando lsblk solo muestra los dispositivos que no están vacíos. Sin embargo, también puede obligar a la herramienta a mostrar dispositivos vacíos. Para ello, utilice la opción de línea de comando -a.
lsblk -a
Por ejemplo, en mi caso, el comando anterior produjo el siguiente resultado:
La fila 'bucle 13' es la nueva incorporación en este caso.
Q3. ¿Cómo hacer que lsblk imprima información de tamaño en bytes?
De forma predeterminada, lsblk imprime la información de tamaño en un formato legible por humanos. Si bien esto es bueno, hay momentos en los que puede necesitar el tamaño en bytes. Lo bueno es que hay una opción (-b) que hace esto.
lsblk -b
El siguiente es un resultado de ejemplo:
Entonces puede ver que la columna 'Tamaño' ahora contiene entradas en bytes.
P4. ¿Cómo hacer un modelo de zona de impresión lsblk para cada dispositivo?
Esto lo puede hacer usando la opción de línea de comando -z.
lsblk -z
Por ejemplo, aquí está el resultado que produjo el comando antes mencionado en mi sistema:
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
P5. ¿Cómo hacer que lsblk omita entradas para esclavos?
Para esto, debe usar la opción de línea de comando -d, que le dice a lsblk que no imprima información relacionada con los dispositivos de soporte o los esclavos.
lsblk -d
Aquí hay una salida de ejemplo:
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
Si compara con la salida producida en casos anteriores, puede ver que no se producen entradas esclavas en la salida en este caso.
P6. ¿Cómo hacer que lsblk use caracteres ascii para el formato de árbol?
De forma predeterminada, el tipo de formato de árbol que usa lsblk puede no ser fácil de usar en muchos casos. Por ejemplo, copiar y pegar puede causar problemas de formato. Entonces, si lo desea, puede obligar a la herramienta a usar caracteres ASCII para el formato de árbol, algo que puede hacer con la opción de línea de comando -i.
lsblk -i
Aquí hay una salida de ejemplo:
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
Para que pueda ver la salida (ver entradas sda) ahora contiene caracteres ASCII en formato de árbol.
P7. ¿Cómo hacer que lsblk muestre información sobre el propietario, el grupo y el modo del dispositivo?
Esto se puede lograr usando la opción de línea de comando -m.
lsblk -m
Aquí está el resultado que produjo el comando antes mencionado en mi caso:
P8. ¿Cómo hacer que la salida lsblk seleccione columnas?
Si lo desea, también puede indicarle a lsblk que genere solo columnas seleccionadas, algo que puede hacer usando la opción de línea de comando -o (que requiere que pase una lista separada por comas de las columnas que desea mostrar).
Por ejemplo:
lsblk -o NAME,SIZE
El comando antes mencionado produjo el siguiente resultado:
Conclusión
Si su trabajo en Linux implica acceder a información relacionada con dispositivos de bloque, entonces lsblk es un comando que debe conocer. Aquí, en este tutorial, hemos discutido varias opciones de línea de comando que ofrece esta herramienta. Para saber más sobre lsblk, diríjase a su página man.