Introduction à la commande LSBLK

Introduction à la commande LSBLK

LSBLK est un très bel utilitaire installé par défaut sur pratiquement toutes les distributions Linux: nous pouvons l'utiliser pour récupérer une vaste gamme d'informations sur tous les périphériques de bloc attachés au système. Dans cet article, nous verrons comment cela fonctionne et comment l'utiliser.

Dans ce tutoriel, vous apprendrez:

  • Comment utiliser l'utilitaire LSBLK pour récupérer des informations sur les appareils de bloc
  • Quelle est la signification des colonnes affichées dans la sortie utilitaire par défaut
  • Comment spécifier les colonnes à afficher et formater la sortie en JSON ou en tant que liste
  • Comment afficher des informations sur un appareil spécifique.

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Distribution indépendante
Logiciel lsblk
Autre Aucune autre exigence nécessaire
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

Utilisation de base LSBLK

Dans son utilisation la plus élémentaire, lorsqu'elle est invoquée sans aucune option ou argument spécifique, l'utilitaire LSBLK produira une sortie en forme d'arbre, y compris tous les périphériques de bloc attachés au système d'exploitation. Voici un exemple:

Nom Maj: Min RM Taille Ro Type Mountpoint Sda 8: 0 0 232.9g 0 disque ├─sda1 8: 1 0 1g 0 partie / démarrage └─Sda2 8: 2 0 231.9g 0 partie └─Luks-5794A0B4-7082-4769-B86B-BD27A544361A 253: 0 0 231.9g 0 crypte ├séfingolfin_vg-root_lv 253: 1 0 35g 0 lvm / ├─fingolfin_vg-swap_lv 253: 2 0 6g 0 lvm [swap] 253: 4 0 170G 0 LVM / MNT / DATA SR0 11: 0 1 1024M 0 ROM ZRAM0 252: 0 0 2.8g 0 disque [swap] 


La structure en forme d'arbre est très utile pour identifier les appareils et leurs partitions, ainsi que la façon dont ils sont structurés sur l'appareil. Dans la sortie ci-dessus, par exemple, nous pouvons voir que deux partitions sur le SDA appareil: SDA1 et sda2.

Comme nous pouvons l'observer, le premier est une partition «standard»: nous pouvons identifier est comme tel parce que nous pouvons jeter un œil à la valeur correspondante dans le TAPER colonne, qui dans ce cas est partie. Nous pouvons également observer que la partition est actuellement montée à /botte.

Le dernier, sda2, est également une partition standard, mais comme nous pouvons facilement le comprendre du graphique, il a des appareils «enfants» ou «esclaves». Le premier est un Luks conteneur identifié par LUKS-5794A0B4-7082-4769-B86B-BD27A544361A (C'est le nom du mappeur de l'appareil). Étant le système installé sur un LVM sur la configuration LUKS, le conteneur Luks lui-même est marqué comme un volume physique et contient des volumes logiques montés sur diverses parties du système.

Dans la première colonne de la sortie, nous pouvons voir des informations sur l'appareil NOM sont fournis, c'est assez facile à comprendre. Veuillez noter que seul le nom du périphérique s'affiche par défaut, et non son chemin complet: pour qu'il soit affiché, nous devons plutôt utiliser le -p option.

La deuxième colonne est nommée Maj: Min: Ce sont les nombres utilisés par le noyau pour identifier en interne les appareils, le premier numéro spécifiant le type de périphérique (8 Par exemple, est utilisé pour les disques SCSI).

La troisième colonne affichée dans la sortie LSBLK par défaut est RM: En regardant cette colonne, nous pouvons voir si l'appareil est amovible (la valeur serait 1), ou non. Dans la sortie ci-dessus, un seul appareil est marqué comme amovible, sr0, lequel est
un lecteur optique.

La portée de la quatrième colonne est facilement identifiée par son nom: TAILLE. En elle, la taille des périphériques correspondants est affichée.

La cinquième colonne est Ro: Cette colonne est utilisée pour spécifier si l'appareil est en lecture seule ou non. Comme le RM colonne, les valeurs de la colonne sont utilisées comme booléens, donc 1 signifie que l'appareil est en lecture seule.

La sixième colonne de la sortie est TAPER: Comme nous l'avons déjà mentionné précédemment, cette colonne est utilisée pour identifier l'appareil ou le type de partition. Par exemple, observant la sortie de la commande, nous pouvons voir que le crypte La valeur est utilisée pour identifier le conteneur LUKS pendant que LVM est utilisé pour identifier les dispositifs de volume logiques, et disque est utilisé pour les appareils de blocs bruts comme SDA.

La septième et dernière colonne est Point de montage: Cette colonne fournit des informations sur le point de montage actuel de chaque périphérique de partition / bloc.

Rassembler des informations sur un appareil spécifique

Comme nous l'avons vu ci-dessus, si nous invoquons le lsblk Commande sans aucun autre argument ou option, nous obtenons des informations sur les appareils actuellement joints au système. Et si nous voulons obtenir des informations sur un appareil spécifique?

Tout ce que nous avons à faire est de passer l'appareil sur lequel nous voulons recueillir des informations comme argument de la commande LSBLK. Par exemple, si nous voulons seulement inspecter le SDA1 Appareil, nous courions:

$ lsblk / dev / sda1 

Remarquez que nous avons fourni le chemin complet de l'appareil, et pas seulement son nom. La sortie produite à partir de la commande ci-dessus, comme on pourrait s'y attendre, est la suivante:

Nom Maj: Min RM Taille Ro Type Mountpoint SDA1 8: 1 0 1G 0 PART / BOOT 

Spécification des colonnes à afficher dans la sortie LSBLK

Nous avons déjà vu quelles sont les colonnes incluses par défaut dans la sortie de LSBLK lorsqu'elle est invoquée sans aucune option spécifique. Ce ne sont cependant qu'un petit sous-ensemble de ceux disponibles. Pour spécifier les informations que nous souhaitons être incluses dans la sortie, nous devons utiliser le -o Option (abréviation pour --sortir) et fournir une liste séparée par des virgules des colonnes que nous voulons être incluses. Par exemple, pour que la sortie n'inclut que des informations sur les noms de périphériques et les types de systèmes de fichiers, nous pourrions s'exécuter:

Nom de LSBLK -O, fStype 


La commande ci-dessus renverrait la sortie suivante:

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 

Pour une liste complète des colonnes disponibles et une explication des informations qu'ils fournissent, nous pouvons invoquer l'utilitaire LSBLK avec le --aider option:

Colonnes de sortie disponibles: nom de périphérique Nom Kname Kernel interne Chemin de nom de l'appareil vers le nœud de périphérique Maj: min Major: numéro de périphérique mineur L'appareil est monté sur l'étiquette de fichiers de fichiers UUID FileSystem uuid ptuuid Partition Table Identifiant (généralement UUID) PtType Partition Table Type de partition Partition Partition Code ou UUID -Parmage unique RM Appareil amovible Appareil amovible ou hotplug (USB, PCMCIA,…) Modèle Identificateur de périphérique Disque de série Numéro de série Taille de la taille de l'état de l'appareil State de l'appareil Nom d'utilisateur Nom de groupe Nom de groupe Mode Mode Node Appareil Permissions Alignement Alignement Offset Min-Io Taille d'E / S Minimum Opt-io Optimal E / O Taille Phy- SEC SECTOR SECTION SECTION LOG-SEC SECTOR LOGIQUE SIME DE ROTA ROTA ROTATION DIP DE DIPE SORT Données WSAME ÉCRIRE MÊME MAX BYTES WWN WWN Identificateur de stockage unique Rand ajoute un aléatoire Parent Parent interne Nom de l'appareil HCTL Host: Cible: LUN pour SCSI Tran Appareil Type de transport Sous-système appareil compatible DAX 

Certaines options peuvent également être utilisées, qui comprennent un ensemble prédéfini de colonnes: invoquer lsblk avec le -F (ou --FS) L'option, par exemple, c'est comme l'appeler en spécifiant le AME,Fstype,ÉTIQUETER,Uuid,Fsavail,FSUSE%,Point de montage
Colonnes.

Modification du format de sortie

Dans les exemples précédents, nous avons vu comment la sortie par défaut produite par l'invocation de la commande LSBLK, est une représentation en forme d'arbre des dispositifs de bloc attachés au système, et leurs appareils d'enfant ou d'esclaves. Il existe cependant un tas d'options que nous pouvons utiliser pour modifier comment la sortie est affichée.

Tout d'abord, nous pouvons utiliser le -d Option (abréviation pour --nodeps) Pour afficher uniquement les appareils parents. Voici le résultat de l'invoquer LSBLK avec cette option:

Nom Maj: Min RM Taille Ro Type Mountpoint Sda 8: 0 0 232.9g 0 disque SR0 11: 0 1 1024M 0 ROM ZRAM0 252: 0 0 2.8g 0 disque [swap] 

Une autre option très intéressante est -J, ou --json: avec elle, nous pouvons obtenir des informations sur les appareils de bloc et leurs relations, dans le json format:

$ lsblk -j "BlockDevices": ["name": "sda", "maj: min": "8: 0", "rm": false, "size": "232.9g "," ro ": false," type ":" disque "," montpoint ": null," enfants ": [" name ":" sda1 "," maj: min ":" 8: 1 "," rm ": false," size ":" 1g "," ro ": false," type ":" part "," montpoint ":" / boot ", " name ":" sda2 "," maj: min: ":" 8: 2 "," rm ": false," taille ":" 231.9g "," ro ": false," type ":" partie "," montpoint ": null," enfants ": [" name ":" luks-5794a0b4-7082-4769-b86b-bd27a544361a "," Maj: min ":" 253: 0 "," rm ": false," taille ":" 231.9g "," ro ": false," type ":" crypte "," montpoint ": null," enfants ": [" name ":" fingolfin_vg-root_lv "," maj: min ":" 253: 1 " , "rm": false, "taille": "35g", "ro": false, "type": "lvm", "montpoint": "/", "name": "fingolfin_vg-swap_lv", " Maj: min ":" 253: 2 "," rm ": false," taille ":" 6g "," ro ": false," type ":" lvm "," montpoint ":" [swap] ", "name": "fingolfin_vg-home_lv", "maj: min": "253: 3", "rm": false, "size": "15g", "ro": false, "type": "lvm" , "MountPoint": "/ home", "name": "fingolfin_vg-data_lv", "maj: min": "253: 4", "rm": false, "size": "170g", "ro ": false," type ":" lvm "," montpoint ":" / mnt / data "]]], " name ":" sr0 "," maj: min ":" 11: 0 " , "rm": true, "size": "1024m", "ro": false, "type": "Rom", "Mountpoint": null, "name": "zram0", "maj: min" : "252: 0", "rm": false, "taille": "2.8g "," ro ": false," type ":" disque "," montpoint ":" [swap] "] 


Ce type de sortie est très utile, entre autres choses, car il peut facilement être analysé avec des langages de programmation plus complets comme Python.

Une autre façon de modifier la sortie affichée est d'utiliser le -l ou --liste Option, qui produit une sortie sous la forme d'une liste. Lorsque cette sortie est sélectionnée, cependant, les relations entre les appareils sont omises, car une liste, par son
La nature est «plate»:

$ lsblk -l nom Maj: min rm taille ro type Mountpoint sda 8: 0 0 232.9g 0 disque sda1 8: 1 0 1g 0 partie / démarrage SDA2 8: 2 0 231.9g 0 partie SR0 11: 0 1 1024M 0 ROM ZRAM0 252: 0 0 2.8G 0 Disque [Swap] LUKS-5794A0B4-7082-4769-B86B-BD27A544361A 253: 0 0 231.9g 0 crypte 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_vg-data_lv 253: 4 0 170g 0 lvm / home mnt / données 

Pour organiser la sortie en «paires», nous pouvons plutôt utiliser le -P ou --paires option:

$ lsblk - paires nom = "sda" maj: min = "8: 0" rm = "0" size = "232.9g "ro =" 0 "type =" disque "name =" sda2 "maj: min =" 8: 2 "rm =" 0 "size =" 231.9g "ro =" 0 "type =" partie "name =" LUKS-5794A0B4-7082-4769-B86B-BD27A544361a "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 "montpoint = "/" Name = "fingolfin_vg-data_lv" maj: min = "253: 4" rm = "0" size = "170g" ro = "0" type = "lvm" montpoint = "/ mnt / data" name = " fingolfin_vg-swap_lv "maj: min =" 253: 2 "rm =" 0 "size =" 6g "ro =" 0 "type =" lvm "montpoint =" [swap] "nom =" fingolfin_vg-home_lv "maj: min: min: min: min: min: = "253: 3" rm = "0" size = "15g" ro = "0" type = "lvm" montpoint = "/ home" name = "sda1" maj: min = "8: 1" rm = "0 "Size =" 1g "ro =" 0 "type =" part "montpoint =" / 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 =" disque "montpoint =" [swap] " 

Une autre option très importante qui est utile à utiliser en particulier dans les scripts, est -n, qui est le court --sans tête. Cette option modifie la sortie afin que la ligne d'en-tête et le nom des colonnes soient omis. Un cas d'utilisation en béton serait le suivant. Supposons que dans un script, nous voulons obtenir le type de système de fichiers d'une partition spécifique (supposons que SDA1), et «le stocker» dans une variable, nous pourrions écrire:

$ fsys = "$ (lsblk --noheadings -o fstype / dev / sda1)" 

Conclusions

Dans ce tutoriel, nous avons appris à connaître la commande LSBLK et comment il peut être utilisé pour récupérer des informations sur les appareils de bloc attachés au système et à leurs relations. Nous avons appris la signification des colonnes par défaut affichées lorsque l'utilitaire est appelé sans aucune option ni argument, nous avons vu comment obtenir des informations sur un appareil spécifique et les différentes options que nous pouvons utiliser pour

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Comment travailler avec l'API WooCommerce REST avec Python
  • Masterring Bash Script Loops
  • Manipulation des mégadonnées pour le plaisir et le profit Partie 3
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Système linux hung? Comment s'échapper vers la ligne de commande et…
  • Comment manipuler les tables de partition GPT avec Gdisk et Sgdisk…
  • Boucles imbriquées dans les scripts bash