Introducción al comando LSBLK

Introducción al comando LSBLK

LSBLK es una utilidad muy agradable instalada de forma predeterminada en prácticamente todas las distribuciones de Linux: podemos usarla para recuperar una amplia gama de información sobre todos los dispositivos de bloque conectados al sistema. En este artículo veremos cómo funciona y cómo usarlo.

En este tutorial aprenderás:

  • Cómo usar la utilidad LSBLK para recuperar información sobre dispositivos de bloque
  • ¿Cuál es el significado de las columnas que se muestran en la salida de utilidad predeterminada?
  • Cómo especificar las columnas que se mostrarán y formatearán la salida como JSON o como una lista
  • Cómo mostrar información sobre un dispositivo específico.

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Distribución independiente
Software lsblk
Otro No se necesitan otros requisitos
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Uso básico de LSBLK

En su uso más básico, cuando se invoca sin ninguna opción o argumento específico, la utilidad LSBLK producirá una salida similar a un árbol que incluye todos los dispositivos de bloque conectados al sistema operativo. Aquí hay un ejemplo:

Nombre Maj: Min RM Tize RO Tipo Tipo de punto SDA 8: 0 0 232.9G 0 Disco ├─Sda1 8: 1 0 1G 0 Parte /Boot └─Sda2 8: 2 0 231.9G 0 PART └─ LUKS-5794A0B4-7082-4769-B86B-BD27A544361A 253: 0 0 231.9G 0 cripta ├─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 / home └ └ └ └_vg-data_lvg-data 253: 4 0 170g 0 lvm /mnt /data sr0 11: 0 1 1024m 0 rom zram0 252: 0 0 2.8g 0 disco [intercambio] 


La estructura similar a un árbol es muy útil para identificar dispositivos y sus particiones, además de cómo están estructurados en el dispositivo. En la salida anterior, por ejemplo, podemos ver que hay dos particiones en el SDA dispositivo: SDA1 y SDA2.

Como podemos observar, el primero es una partición "estándar": podemos identificar es tal porque podemos echar un vistazo al valor correspondiente en el TIPO columna, que en este caso es parte. También podemos observar que la partición está actualmente montada en /bota.

Este último, SDA2, también es una partición estándar, pero como podemos entender fácilmente en el gráfico, tiene algunos dispositivos de "hijos" o "esclavos". El primero es un Luks contenedor identificado por LUKS-5794A0B4-7082-4769-B86B-BD27A544361A (Este es el nombre del mapeador del dispositivo). Al ser el sistema instalado en un LVM en la configuración de Luks, el contenedor de Luks en sí está marcado como un volumen físico y contiene algunos volúmenes lógicos montados en varias parte del sistema.

En la primera columna de la salida podemos ver información sobre el dispositivo NOMBRE se proporcionan, que es bastante fácil de entender. Observe que solo el nombre del dispositivo se muestra de forma predeterminada, y no su ruta completa: para que se muestre, en su lugar, deberíamos usar el -pag opción.

La segunda columna se nombra Maj: Min: Esos son los números utilizados por el núcleo para identificar internamente los dispositivos, el primer número que especifica el tipo de dispositivo (8 Por ejemplo, se usa para discos SCSI).

La tercera columna que se muestra en la salida de LSBLK predeterminada es RM: Al mirar esta columna, podemos ver si el dispositivo es extraíble (el valor sería 1), O no. En la salida anterior, solo un dispositivo está marcado como extraíble, sr0, cual es
una unidad óptica.

El alcance de la cuarta columna se identifica fácilmente por su nombre: TAMAÑO. En él se muestra el tamaño de los dispositivos correspondientes.

La quinta columna es RO: Esta columna se usa para especificar si el dispositivo es de solo lectura o no. Como el RM columna, los valores en la columna se usan como booleanos, por lo tanto 1 significa que el dispositivo es de solo lectura.

La sexta columna de la salida es TIPO: Como ya mencionamos antes, esta columna se usa para identificar el dispositivo o tipo de partición. Por ejemplo, observando la salida del comando, podemos ver que el cripta el valor se usa para identificar el contenedor de luks mientras LVM se utiliza para identificar dispositivos de volumen lógico y disco se usa para dispositivos de bloque crudo como SDA.

La séptima y última columna es PUNTO DE MONTAJE: Esta columna proporciona información sobre el punto de montaje actual de cada partición/dispositivo de bloque.

Recopilar información sobre un dispositivo específico

Como vimos arriba, si invocamos el lsblk Comando sin ningún otro argumento u opción. Obtenemos información sobre los dispositivos actualmente adjuntos al sistema. ¿Qué pasa si queremos obtener información sobre un dispositivo específico??

Todo lo que tenemos que hacer es pasar el dispositivo del que queremos recopilar información como argumento del comando LSBLK. Por ejemplo, si solo queremos inspeccionar el SDA1 dispositivo, ejecutaríamos:

$ lsblk /dev /sda1 

Observe que proporcionamos la ruta completa del dispositivo, y no solo su nombre. La salida producida del comando anterior, como era de esperar, es la siguiente:

Nombre Maj: Min RM Tamaño RO Tipo de punto de montaje SDA1 8: 1 0 1G 0 Parte /arranque 

Especificar las columnas que se mostrarán en la salida LSBLK

Ya vimos cuáles son las columnas incluidas de forma predeterminada en la salida de LSBLK cuando se invoca sin ninguna opción específica. Sin embargo, son solo un pequeño subconjunto de los disponibles. Para especificar la información que queremos incluir en la salida, debemos usar el -O opción (abreviatura de --producción) y proporcione una lista separada por comas de las columnas que queremos ser incluidas. Por ejemplo, para que la salida incluya solo información sobre nombres de dispositivos y tipos de sistemas de archivos, podríamos ejecutar:

$ LSBLK -O Nombre, Fstype 


El comando anterior devolvería la siguiente salida:

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 

Para una lista completa de las columnas disponibles y una explicación de la información que proporcionan, podemos invocar la utilidad LSBLK con el --ayuda opción:

Columnas de salida disponibles: nombre del dispositivo Nombre del dispositivo Kname Ruta del nombre del dispositivo del dispositivo del dispositivo al nodo del dispositivo Maj: mínimo Mayor: Número de dispositivo menor FSAVAIL Files Sitio del sistema FSSIZE Disponible Tamaño del sistema de archivos Fstype Tipo de sistema de archivos Fsused Tamaño del sistema de archivos FSUSE Se usa FSUSE Sistema Uso de porcentaje de archivos FSVER El dispositivo es la etiqueta de etiqueta montada etiqueta del sistema de archivos uuid del sistema de archivos uuid ptuuid tabla de tabla (generalmente uuid) tabla de partición pttype tipo código de partición de partidos o uuid typename type de partición nombre de partition partition -Los dispositivo solo RM Dispositivo de Hotplug Hotplug o dispositivo Hotplug (USB, PCMCIA,…) Modelo Identificador de dispositivo Disk Serial Número de serie Tamaño del estado del dispositivo Estado del dispositivo Nombre de usuario Nombre del grupo Nombre del grupo Modo del dispositivo Nodio del dispositivo Alineación de alineación de alineación Min-io Mínimo Tamaño de E/S OPT-II Tamaño de E/S Tamaño de E/S Phy- Sec Tamaño del sector físico Log-SEC-SEC Sector Tamaño del sector Rota Rota Rotacional Progrado de E/S Nombre del planificador RQ-SIZE Solicitud de cola Tipo de dispositivo Tipo de dispositivo DISC-ALN DESCARGO DESCUBRA DESCUBIENDO DISCUNTO DESCARGO DESCARGO DESCARGO DE DISCARTA MAX DESCARTE datos wsame escribir mismos bytes máximos wwn identificador de almacenamiento único rand agrega aleatoriedad pkname interno interno parent name nombre del dispositivo hctl htl: canal: objetivo: lun para scsi tran dispositivo de transporte de dispositivo subsistemas desduplicados cadena de subsistemas de revisión revisión de dispositivos proveedores proveedor de zona zondeado dax dax dax dax dispositivo con capacidad Dax 

También se pueden utilizar algunas opciones, que comprenden un conjunto predefinido de columnas: invocar lsblk con el -F (o --FS) La opción, por ejemplo, es como llamarlo especificando el Ame,Fstipo,ETIQUETA,Uuid,Fsavail,FSUSE%,PUNTO DE MONTAJE
columnas.

Modificación del formato de salida

En los ejemplos anteriores, vimos cómo la salida predeterminada producida por la invocación del comando LSBLK es una representación similar a un árbol de los dispositivos de bloque conectados al sistema y sus dispositivos de hijos o esclavos. Hay, sin embargo, hay un montón de opciones que podemos usar para modificar cómo se muestra la salida.

En primer lugar, podemos usar el -d opción (abreviatura de --nodops) para mostrar solo dispositivos principales. Aquí está el resultado de invocar a LSBLK con dicha opción:

Nombre Maj: Min RM Tize RO Tipo Tipo de punto SDA 8: 0 0 232.9G 0 Disco Sr0 11: 0 1 1024m 0 Rom Zram0 252: 0 0 2.8g 0 disco [intercambio] 

Otra opción muy interesante es -J, o --json: Con él podemos obtener información sobre los dispositivos de bloque y sus relaciones, en el json formato:

$ lsblk -j "blockdevices": ["nombre": "sda", "maj: min": "8: 0", "rm": falso, "tamaño": "232.9g "," ro ": falso," tipo ":" disco "," MountPoint ": nulo," niños ": [" nombre ":" SDA1 "," Maj: Min ":" 8: 1 ",", " rm ": falso," tamaño ":" 1g "," ro ": falso," tipo ":" Parte "," MountPoint ":"/Boot ", " Nombre ":" SDA2 "," Maj: Min ":" 8: 2 "," rm ": falso," tamaño ":" 231.9g "," ro ": falso," tipo ":" Parte "," MountPoint ": NULL," NIÑOS ": [" Nombre ":" Luks-5794a0b4-7082-4769-b86b-BD27A5444361a "," Maj: " min ":" 253: 0 "," rm ": falso," tamaño ":" 231.9g "," ro ": falso," tipo ":" cripta "," MountPoint ": nulo," niños ": [" nombre ":" fingolfin_vg-root_lv "," maj: min ":" 253: 1 " , "rm": falso, "tamaño": "35g", "ro": falso, "type": "lvm", "MountPoint": "/", "nombre": "fingolfin_vg-swap_lv", ",", ",", ",", ",", ",", ",", ",", ",", " maj: min ":" 253: 2 "," rm ": falso," tamaño ":" 6g "," ro ": falso," type ":" lvm "," MountPoint ":" [Swap] ", "nombre": "fingolfin_vg-home_lv", "maj: min": "253: 3", "rm": falso, "tamaño": "15g", "ro": falso, "tipo": "lvm" , "MountPoint": "/Home", "Nombre": "fingolfin_vg-data_lv", "maj: min": "253: 4", "rm": falso, "tamaño": "170g", "ro", "ro ": falso," tipo ":" lvm "," MountPoint ":"/mnt/data "]]], " nombre ":" sr0 "," maj: min ":" 11: 0 " , "rm": verdadero, "tamaño": "1024m", "ro": falso, "tipo": "rom", "MountPoint": null, "nombre": "zram0", "maj: min" : "252: 0", "rm": falso, "tamaño": "2.8g "," ro ": falso," tipo ":" disco "," MountPoint ":" [Swap] "] 


Este tipo de salida es muy útil, entre las otras cosas, ya que se puede analizar fácilmente con lenguajes de programación más completos como Python.

Otra forma de cambiar la salida mostrada es usar el -l o --lista opción, que produce una salida en forma de lista. Sin embargo, cuando se selecciona esta salida, las relaciones entre dispositivos se omiten, ya que una lista, por su
La naturaleza es "plana":

$ LSBLK -L Nombre Maj: Min RM Tipo RO Tipo de monte SDA 8: 0 0 232.9G 0 Disco SDA1 8: 1 0 1G 0 Parte /Boot SDA2 8: 2 0 231.9G 0 PART SR0 11: 0 1 1024M 0 ROM ZRAM0 252: 0 0 2.8g 0 Disco [intercambio] Luks-5794a0b4-7082-4769-b86b-bd27a544361a 253: 0 0 231.9G 0 cripto 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 / home fingolfin_vgg-data_lv 253: 4 0 170g 0 lvm / lvm / mnt/datos 

Para organizar la salida en "pares", en cambio, podemos usar el -PAG o --pares opción:

$ 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 "type =" par "name =" luks-5794a0b4-7082-4769-b86b-bd27a5444361a "maj: min =" 253: 0 "rm =" 0 "size =" 231.9g "ro =" 0 "type =" crypt "name =" fingolfin_vg-root_lv "maj: min =" 253: 1 "rm =" 0 "size =" 35g "ro =" 0 "type =" lvm "MountPoint = "/" Name = "fingolfin_vg-data_lv" maj: min = "253: 4" rm = "0" size = "170g" ro = "0" type = "lvm" MountPoint = "/mnt/data" name = " fingolfin_vg-swap_lv "maj: min =" 253: 2 "rm =" 0 "size =" 6g "ro =" 0 "type =" lvm "MountPoint =" [swap] "name =" fingolfin_vg-home_lv "maj: min = "253: 3" rm = "0" size = "15g" ro = "0" type = "lvm" MountPoint = "/home" name = "sda1" maj: min = "8: 1" rm = "0 "Size =" 1g "ro =" 0 "type =" Parte "MountPoint ="/Boot "name =" Sr0 "maj: min =" 11: 0 "rm =" 1 "size =" 1024m "ro =" 0 "Type =" rom "name =" zram0 "maj: min =" 252: 0 "rm =" 0 "size =" 2.8g "ro =" 0 "type =" disk "MountPoint =" [Swap] " 

Otra opción muy importante que es útil para usar especialmente en scripts, es -norte, cual es el corto --sin cabeza. Esta opción modifica la salida para que se omite la línea de encabezado y el nombre de las columnas. Un caso de uso concreto sería el siguiente. Supongamos que en un script queremos obtener el tipo de sistema de archivos de una partición específica (supongamos que es SDA1), y "almacenarlo" en una variable, podríamos escribir:

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

Conclusiones

En este tutorial aprendimos a conocer el comando LSBLK y cómo se puede usar para recuperar información sobre dispositivos de bloque adjunto al sistema y sus relaciones. Aprendimos el significado de las columnas predeterminadas que se muestran cuando se llama a la utilidad sin ninguna opción o argumento, vimos cómo obtener información sobre un dispositivo específico y las diversas opciones a las que podemos usar

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Cómo trabajar con la API REST de WooCommerce con Python
  • Mastering Bash Script Loops
  • Manipulación de Big Data para diversión y ganancias Parte 3
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Sistema colgado de Linux? Cómo escapar a la línea de comando y ..
  • Cómo manipular las tablas de partición GPT con Gdisk y Sgdisk ..
  • Bucles anidados en guiones Bash