Introdução ao comando lsblk

Introdução ao comando lsblk

O LSBLK é um utilitário muito bom instalado por padrão em praticamente todas as distribuições Linux: podemos usá -lo para recuperar uma vasta gama de informações sobre todos os dispositivos de bloco anexados ao sistema. Neste artigo, veremos como funciona e como usá -lo.

Neste tutorial, você aprenderá:

  • Como usar o utilitário LSBLK para recuperar informações sobre dispositivos de bloco
  • Qual é o significado das colunas exibidas na saída do utilitário padrão
  • Como especificar as colunas a serem exibidas e formatar a saída como JSON ou como uma lista
  • Como exibir informações sobre um dispositivo específico.

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Distribuição Independente
Programas LSBLK
Outro Nenhum outro requisito necessário
Convenções # - requer que os comandos linux -comidos sejam executados com privilégios de raiz diretamente como usuário root ou por uso de sudo comando
$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular

LSBLK Uso básico

Em seu uso mais básico, quando invocado sem nenhuma opção ou argumento específico, o utilitário LSBLK produzirá uma saída semelhante a uma árvore, incluindo todos os dispositivos de bloco anexados ao sistema operacional. Aqui está um exemplo:

Nome Maj: Min RM Tamanho RO Tipo MountPoint SDA 8: 0 0 232.9g 0 disco ├─sda1 8: 1 0 1g 0 parte /bota └─sda2 8: 2 0 231.9G 0 Parte └─LUKS-5794A0B4-7082-4769-B86B-BD27A544361A 253: 0 0 231.9G 0 Crypt ├─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 └lthing_vg-home_lv 253: 3 0 15g 0 LVM / 253: 4 0 170g 0 lvm /mnt /dados SR0 11: 0 1 1024M 0 ROM Zram0 252: 0 0 2.8G 0 disco [troca] 


A estrutura semelhante a uma árvore é muito útil para identificar dispositivos e suas partições, além de como elas são estruturadas no dispositivo. Na saída acima, por exemplo, podemos ver que são duas partições no SDA dispositivo: SDA1 e SDA2.

Como podemos observar, o primeiro é uma partição "padrão": podemos identificar é como tal porque podemos dar uma olhada no valor correspondente no TIPO coluna, que neste caso é papel. Também podemos observar que a partição está atualmente montada em /bota.

Esta última, SDA2, também é uma partição padrão, mas como podemos entender facilmente no gráfico, ela tem alguns dispositivos de "crianças" ou "escravos". O primeiro é um Luks contêiner identificado por LUKS-5794A0B4-7082-4769-B86B-BD27A544361A (este é o nome do mapeador de dispositivo). Sendo o sistema instalado em um LVM na configuração de Luks, o próprio contêiner Luks é marcado como um volume físico e contém alguns volumes lógicos montados em várias partes do sistema.

Na primeira coluna da saída, podemos ver informações sobre o dispositivo NOME são fornecidos, isso é muito fácil de entender. Observe que apenas o nome do dispositivo é exibido por padrão, e não seu caminho completo: para que seja exibido, em vez disso, devemos usar o -p opção.

A segunda coluna é nomeada Maj: Min: Esses são os números usados ​​pelo kernel para identificar internamente os dispositivos, o primeiro número especificando o tipo de dispositivo (8 por exemplo, é usado para discos SCSI).

A terceira coluna exibida na saída LSBLK padrão é Rm: olhando para esta coluna, podemos ver se o dispositivo é removível (o valor seria 1), ou não. Na saída acima, apenas um dispositivo é marcado como removível, SR0, qual é
uma unidade óptica.

O escopo da quarta coluna é facilmente identificado por seu nome: TAMANHO. Nele, o tamanho dos dispositivos correspondentes é exibido.

A quinta coluna é Ro: Esta coluna é usada para especificar se o dispositivo é somente leitura ou não. Como o Rm coluna, os valores na coluna são usados ​​como booleanos, então 1 significa que o dispositivo é somente leitura.

A sexta coluna da saída é TIPO: Como já mencionamos antes, esta coluna é usada para identificar o dispositivo ou o tipo de partição. Por exemplo, observando a saída do comando, podemos ver que o cripta O valor é usado para identificar o contêiner Luks enquanto lvm é usado para identificar dispositivos de volume lógico e disco é usado para dispositivos de bloco bruto como SDA.

A sétima e a última coluna é PONTO DE MONTAGEM: Esta coluna fornece informações sobre o ponto de montagem atual de cada dispositivo de partição/bloco.

Reunindo informações sobre um dispositivo específico

Como vimos acima, se invocarmos o LSBLK Comando sem outros argumentos ou opções, obtemos informações sobre os dispositivos atualmente anexados ao sistema. E se quisermos obter informações sobre um dispositivo específico?

Tudo o que precisamos fazer é passar no dispositivo que queremos reunir informações como o argumento do comando lsblk. Por exemplo, se queremos apenas inspecionar o SDA1 dispositivo, nós executaríamos:

$ lsblk /dev /sda1 

Observe o que fornecemos o caminho completo do dispositivo, e não apenas seu nome. A saída produzida a partir do comando acima, como seria de esperar, é o seguinte:

Nome Maj: Min RM Tamanho RO Tipo MONTAGEM SDA1 8: 1 0 1G 0 Parte /Boot 

Especificando as colunas a serem exibidas na saída LSBLK

Já vimos quais são as colunas incluídas por padrão na saída do LSBLK quando ele é invocado sem nenhuma opção específica. Esses são, no entanto, apenas um pequeno subconjunto dos disponíveis. Para especificar as informações que queremos ser incluídas na saída, devemos usar o -o opção (abreviação de --saída) e fornecer uma lista separada por vírgula das colunas que queremos ser incluídas. Por exemplo, para que a saída inclua apenas informações sobre nomes de dispositivos e tipos de sistema de arquivos, poderíamos executar:

$ lsblk -o nome, fstype 


O comando acima retornaria a seguinte saída:

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 uma lista completa das colunas disponíveis e uma explicação das informações que eles fornecem, podemos invocar o utilitário lsblk com o --ajuda opção:

Colunas de saída disponíveis: Nome Nome do dispositivo Nomear o Nome do dispositivo do kernel interno Caminho do caminho para o nó do dispositivo Major: Min Major: Minor Número do dispositivo FSAVAIL Tamanho do sistema de arquivos disponível FSSIZE Tamanho do sistema de arquivos FSTYPETY Tipo de sistema de arquivos FSUSUSUSUSE O dispositivo é montado Rótulo Rótulo do sistema de arquivos Uuid Sistema de arquivos uuid tabela de partição ptuuid (geralmente uuid) tabela de partição pttype tabela tipo partitio partitio tipo código ou uuid parttypename de partição tipo nome partlabel partition rótulo de partição -Pentiu o dispositivo RM RM removível HotPlug Removable ou Hotplug Dispositivo (USB, PCMCIA,…) Modelo Disposition Identificador Disco Número de série do disco serial Tamanho do tamanho do estado do estado Estado do dispositivo O proprietário do dispositivo Nome de usuário Nome do grupo Grupo Modo de dispositivo Nó permissões Alinhamento de alinhamento Offset Min-Io I/S Tamanho Opt-Io I/S Tamanho SEC Tamanho do setor físico Tamanho do setor lógico Tamanho Lógico Dispositivo de rotação ROTO Agracia Nome do agendador Nome do agendador RQ Solte de solicitação TIPO DE TIPO DE DISPOSITIVO DISPOSTO DISC-ALN DE DESCARTO DE DESCARTO DE DISCO DE DISCO DE DESCUTO DISCO Dados wsame escreva o mesmo max bytes wwn identificador de armazenamento exclusivo rand adiciona aleatoriedade pkname interno pai kernel nome de dispositivo hctl host: canal: alvo: lun para scsi transporte de transporte de dispositivo Tipo subsistemas de subsistemas de dados dax do proveniente de subsistemas do dispositivo de revisão do dispositivo de revisão do dispositivo de zonas de zonas de zonas do vendedor de dispositivos dispositivo com capacidade de Dax 

Algumas opções também podem ser usadas, que compreendem um conjunto de colunas predefinidas: invocando LSBLK com o -f (ou --fs) opção, por exemplo, é como chamá -lo especificando o AME,Fstype,RÓTULO,Uuid,Fsavail,Fsuse%,PONTO DE MONTAGEM
colunas.

Modificando o formato de saída

Nos exemplos anteriores, vimos como a saída padrão produzida pela invocação do comando lsblk, é uma representação semelhante a uma árvore dos dispositivos de bloco anexados ao sistema, e seus dispositivos filho ou escravos. Existem, no entanto, um monte de opções que podemos usar para modificar como a saída é exibida.

Primeiro de tudo, podemos usar o -d opção (abreviação de --nodeps) para exibir apenas dispositivos pais. Aqui está o resultado de invocar o LSBLK com a referida opção:

Nome Maj: Min RM Tamanho RO Tipo MountPoint SDA 8: 0 0 232.9g 0 disco SR0 11: 0 1 1024M 0 Rom Zram0 252: 0 0 2.8G 0 disco [troca] 

Outra opção muito interessante, é -J, ou --JSON: com ele, podemos obter informações sobre os dispositivos de bloco e seus relacionamentos, no JSON formatar:

$ lsblk -j "BlockDevices": ["name": "sda", "maj: min": "8: 0", "rm": false, "size": "232.9g "," ro ": false," tipo ":" disco "," mountpoint ": nulo," filhos ": [" nome ":" sda1 "," maj: min ":" 8: 1 "," rm ": false," tamanho ":" 1g "," ro ": false," tipo ":" parte "," MountPoint ":"/boot ", " nome ":" sda2 "," maj: min: min: min: ":" 8: 2 "," rm ": false," tamanho ":" 231.9g "," ro ": false," tipo ":" parte "," MountPoint ": null," filhos ": [" name ":" LUKS-5794A0B4-7082-4769-B86B-BD27A544361A "," Maj: Maj: Maj: min ":" 253: 0 "," rm ": false," tamanho ":" 231.9g "," ro ": false," tipo ":" cripta "," mountpoint ": null," filhos ": [" name ":" fingolfin_vg-root_lv "," maj: min ":" 253: 1 " , "rm": false, "tamanho": "35g", "ro": false, "tipo": "lvm", "MountPoint": "/", "name": "fingolfin_vg-swap_lv", " maj: min ":" 253: 2 "," rm ": false," tamanho ":" 6g "," ro ": false," tipo ":" lvm "," Mountpoint ":" [swap] ", "Nome": "Fingolfin_vg-Home_lv", "maj: min": "253: 3", "rm": false, "size": "15g", "ro": false, "tipo": "lvm" , "MountPoint": "/home", "name": "fingolfin_vg-data_lv", "maj: min": "253: 4", "rm": false, "size": "170g", "ro" ": false," tipo ":" lvm "," MountPoint ":"/mnt/data "]]], " name ":" sr0 "," maj: min ":" 11: 0 " , "rm": verdadeiro, "tamanho": "1024m", "ro": false, "tipo": "rom", "MountPoint": null, "nome": "zram0", "maj: min" : "252: 0", "rm": false, "tamanho": "2.8g "," ro ": false," tipo ":" disco "," MountPoint ":" [swap] "] 


Esse tipo de saída é muito útil, entre as outras coisas, pois pode ser facilmente analisado com linguagens de programação mais completas como o Python.

Outra maneira de alterar a saída exibida é usar o -eu ou --lista opção, que produz uma saída na forma de uma lista. Quando essa saída é selecionada, no entanto, as relações entre os dispositivos são omitidas, pois uma lista, por seu
A natureza é "plana":

$ lsblk -l nome maj: min rm size ro Mountpoint SDA 8: 0 0 232.9G 0 DISCO SDA1 8: 1 0 1G 0 PARTE /BOOT SDA2 8: 2 0 231.9g 0 Parte SR0 11: 0 1 1024M 0 Rom Zram0 252: 0 0 2.8G 0 DISCO [SWAP] LUKS-5794A0B4-7082-4769-B86B-BD27A5444361A 253: 0 0 231.9g 0 Crypt 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_v-home_lv 253: 3 0 15g 0 mnt/dados 

Para organizar a saída em "pares", em vez disso, podemos usar o -P ou --pares opção:

$ lsblk -nome dos pares = "sda" maj: min = "8: 0" rm = "0" size = "232.9g "ro =" 0 "tipo =" disco "nome =" sda2 "maj: min =" 8: 2 "rm =" 0 "size =" 231.9g "ro =" 0 "type =" parte "nome =" luks-5794a0b4-7082-4769-b86b-bd27a5444361a "maj: min =" 253: 0 "rm =" 0 "size =" 231.9g "ro =" 0 "type =" cripta "nome =" fingolfin_vg-root_lv "maj: min =" 253: 1 "rm =" 0 "size =" 35g "ro =" 0 "tipo =" lvm "MountPoint = "/" Name = "fingolfin_vg-data_lv" maj: min = "253: 4" rm = "0" size = "170g" ro = "0" type = "lvm" MountPoint = "/mnt/dados" Nome = " fingolfin_vg-swap_lv "maj: min =" 253: 2 "rm =" 0 "size =" 6g "ro =" 0 "tipo =" lvm "MountPoint =" [swap] "name =" fingolfin_vg-home_lv "maj: min: min" = "253: 3" rm = "0" size = "15g" ro = "0" tipo = "lvm" MountPoint = "/home" nome = "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 "nome =" zram0 "maj: min =" 252: 0 "rm =" 0 "size =" 2.8g "ro =" 0 "type =" disco "MountPoint =" [swap] " 

Outra opção muito importante que é útil para usar, especialmente em scripts, é -n, qual é o curta para --sem títulos. Esta opção modifica a saída para que a linha do cabeçalho e o nome das colunas sejam omitidas. Um caso de uso concreto seria o seguinte. Suponha que, em um script, queremos obter o tipo de sistema de arquivos de uma partição específica (vamos supor que SDA1) e "armazenar" em uma variável, poderíamos escrever:

$ fsys = "$ (lsblk - -NOHEADINGS -O FSTYPE /DEV /SDA1)" 

Conclusões

Neste tutorial, aprendemos a conhecer o comando lsblk e como ele pode ser usado para recuperar informações sobre dispositivos de bloco anexados ao sistema e seus relacionamentos. Aprendemos o significado das colunas padrão exibidas quando o utilitário é chamado sem nenhuma opção ou argumentos, vimos como obter informações sobre um dispositivo específico e as várias opções que podemos usar para

Tutoriais do Linux relacionados:

  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Coisas para instalar no Ubuntu 20.04
  • Como trabalhar com a API de Rest WooCommerce com Python
  • Mastering Bash Script Loops
  • Manipulação de big data para diversão e lucro Parte 3
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Sistema Linux Hung? Como escapar para a linha de comando e…
  • Como manipular as tabelas de partição GPT com Gdisk e Sgdisk…
  • Loops aninhados em scripts de basquete