Tutorial del comando lsblk de Linux para principiantes (8 ejemplos)
En Linux, los dispositivos de bloque son archivos especiales que hacen referencia o representan un dispositivo (que puede ser cualquier cosa, desde un disco duro hasta una unidad USB). Así que, naturalmente, hay herramientas de línea de comandos que te ayudan con tu trabajo relacionado con los dispositivos de bloque. Una de esas utilidades es lsblk.
En este tutorial, hablaremos de este comando utilizando 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 Ubuntu 18.04 LTS.
Comando lsblk de Linux
El comando lsblk en Linux enumera los dispositivos de bloque. A continuación se muestra su sintaxis:
lsblk [options] [device...]
Y así es como lo explica la página man 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
A continuación hay algunos ejemplos de estilo Q&A que deberían darte una mejor idea de cómo funciona lsblk.
Q1. ¿Cómo se utiliza el comando lsblk?
El uso básico es bastante sencillo: basta con ejecutar «lsblk» sin ninguna opción.
lsblk
A continuación se muestra la salida que produjo este comando en mi sistema:
La primera columna enumera los nombres de los dispositivos, seguidos de los correspondientes números de dispositivo mayor y menor, si el dispositivo es o no extraíble (1 en caso de que lo sea), el tamaño del dispositivo, si el dispositivo es o no de sólo lectura, el tipo de dispositivo (disco, partición, etc.) y, por último, el punto de montaje del dispositivo (si está disponible).
Q2. ¿Cómo hacer que lsblk muestre también los dispositivos vacíos?
Por defecto, el comando lsblk sólo muestra los dispositivos no vacíos. Sin embargo, puedes obligar a la herramienta a mostrar también los dispositivos vacíos. Para ello, utiliza la opción de línea de comandos -a.
lsblk -a
Por ejemplo, en mi caso, el comando anterior produjo la siguiente salida:
La fila «bucle 13» es la nueva adición en este caso.
Q3. ¿Cómo hacer que lsblk imprima la información del tamaño en bytes?
Por defecto, lsblk imprime la información del tamaño en forma legible para el ser humano. Aunque esto es bueno, hay veces que puedes necesitar el tamaño en bytes. Lo bueno es que hay una opción (-b) que hace esto.
lsblk -b
A continuación se muestra un ejemplo de salida:
Así puedes ver que la columna «Tamaño» contiene ahora entradas en bytes.
Q4. ¿Cómo hacer que lsblk imprima el modelo de zona de cada dispositivo?
Puedes hacerlo utilizando la opción de línea de comandos -z.
lsblk -z
Por ejemplo, aquí está la salida que produjo el comando 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
Q5. ¿Cómo hacer que lsblk omita las entradas de los esclavos?
Para ello, debes utilizar la opción de línea de comandos -d, que indica a lsblk que no imprima la información relacionada con los dispositivos titulares o esclavos.
lsblk -d
Aquí tienes un ejemplo de salida:
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 lo comparas con la salida producida en los casos anteriores, puedes ver que en este caso no se producen entradas de esclavos en la salida.
Q6. ¿Cómo hacer que lsblk utilice caracteres ascii para el formato de árbol?
Por defecto, el tipo de formato de árbol que utiliza lsblk puede no ser fácil de usar en muchos casos. Por ejemplo, copiar y pegar puede causar problemas de formato. Así que, si quieres, puedes forzar a la herramienta a utilizar caracteres ascii para el formato del árbol, algo que puedes hacer utilizando la opción de línea de comandos -i.
lsblk -i
Aquí tienes un ejemplo de salida:
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
Así puedes ver que la salida (ver entradas sda) contiene ahora caracteres ASCII en el formato de árbol.
Q7. ¿Cómo hacer que lsblk muestre información sobre el propietario, el grupo y el modo del dispositivo?
Esto se puede conseguir utilizando la opción de línea de comandos -m.
lsblk -m
Aquí está la salida que produjo el comando mencionado en mi caso:
Q8. ¿Cómo hacer que lsblk muestre columnas seleccionadas?
Si quieres, también puedes hacer que lsblk muestre sólo las columnas seleccionadas, algo que puedes hacer utilizando la opción de línea de comandos -o (que requiere que pases una lista de columnas separadas por comas que quieras mostrar).
Por ejemplo:
lsblk -o NAME,SIZE
El comando mencionado anteriormente produjo la siguiente salida:
Conclusión
Si tu trabajo en Linux implica acceder a información relacionada con dispositivos de bloque, entonces lsblk es un comando que debes conocer. En este tutorial hemos hablado de varias opciones de línea de comandos que ofrece esta herramienta. Para saber más sobre lsblk, dirígete a su página man.