Sous Linux, les périphériques de bloc sont des fichiers spéciaux qui font référence à ou représentent un périphérique (qui peut être n'importe quoi, d'un disque dur à une clé USB). Alors naturellement, il existe des outils de ligne de commande qui vous aident dans votre travail lié aux périphériques de blocage. Une fois qu'un tel utilitaire est lsblk .
Dans ce didacticiel, nous discuterons de cette commande à l'aide d'exemples faciles à comprendre. Mais avant cela, il convient de mentionner que tous les exemples mentionnés ici ont été testés sur une machine Ubuntu 18.04 LTS.
Commande Linux lsblk
La commande lsblk sous Linux répertorie les périphériques de bloc. Voici sa syntaxe :
lsblk [options] [device...]
Et voici comment la page de manuel de l'outil l'explique :
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
Voici quelques exemples sous forme de questions-réponses qui devraient vous donner une meilleure idée du fonctionnement de lsblk.
Q1. Comment utiliser la commande lsblk ?
L'utilisation de base est assez simple - il suffit d'exécuter 'lsblk' sans aucune option.
lsblk
Voici la sortie produite par cette commande sur mon système :
La première colonne répertorie les noms de périphérique, suivis des numéros de périphérique majeurs et mineurs correspondants, si le périphérique est amovible ou non (1 si tel est le cas), la taille du périphérique, si le périphérique est en lecture seule ou non, le type de périphérique (disque , partition, etc.), et enfin le point de montage du périphérique (si disponible).
Q2. Comment faire en sorte que lsblk affiche également les appareils vides ?
Par défaut, la commande lsblk affiche uniquement les périphériques non vides. Cependant, vous pouvez également forcer l'outil à afficher les appareils vides. Pour cela, utilisez l'option de ligne de commande -a.
lsblk -a
Par exemple, dans mon cas, la commande ci-dessus a produit le résultat suivant :
La ligne "boucle 13" est le nouvel ajout dans ce cas.
Q3. Comment créer des informations de taille d'impression lsblk en octets ?
Par défaut, lsblk imprime les informations de taille sous une forme lisible par l'homme. Bien que cela soit bon, il peut arriver que vous ayez besoin d'une taille en octets. Ce qui est bien, c'est qu'il existe une option (-b) qui fait cela.
lsblk -b
Voici un exemple de sortie :
Vous pouvez donc voir que la colonne "Taille" contient désormais des entrées en octets.
Q4. Comment créer un modèle de zone d'impression lsblk pour chaque appareil ?
Vous pouvez le faire en utilisant l'option de ligne de commande -z.
lsblk -z
Par exemple, voici la sortie de la commande susmentionnée produite sur mon système :
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. Comment faire en sorte que lsblk ignore les entrées pour les esclaves ?
Pour cela, vous devez utiliser l'option de ligne de commande -d, qui indique à lsblk de ne pas imprimer les informations relatives aux appareils titulaires ou aux esclaves.
lsblk -d
Voici un exemple de sortie :
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 vous comparez avec la sortie produite dans les cas précédents, vous pouvez voir qu'aucune entrée esclave n'est produite dans la sortie dans ce cas.
Q6. Comment faire en sorte que lsblk utilise des caractères ascii pour le formatage de l'arborescence ?
Par défaut, le type de formatage d'arborescence utilisé par lsblk peut ne pas être convivial dans de nombreux cas. Par exemple, le copier-coller peut entraîner des problèmes de formatage. Donc, si vous le souhaitez, vous pouvez forcer l'outil à utiliser des caractères ascii pour le formatage de l'arborescence, ce que vous pouvez faire en utilisant l'option de ligne de commande -i.
lsblk -i
Voici un exemple de sortie :
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
Ainsi, vous pouvez voir que la sortie (voir les entrées sda) contient maintenant des caractères ASCII au format arborescent.
Q7. Comment faire en sorte que lsblk affiche des informations sur le propriétaire, le groupe et le mode de l'appareil ?
Ceci peut être réalisé en utilisant l'option de ligne de commande -m.
lsblk -m
Voici la sortie de la commande susmentionnée produite dans mon cas :
Q8. Comment faire en sorte que la sortie lsblk sélectionne des colonnes ?
Si vous le souhaitez, vous pouvez également diriger lsblk pour ne sortir que des colonnes sélectionnées, ce que vous pouvez faire à l'aide de l'option de ligne de commande -o (qui vous oblige à transmettre une liste de colonnes séparées par des virgules que vous souhaitez afficher).
Par exemple :
lsblk -o NAME,SIZE
La commande susmentionnée a produit le résultat suivant :
Conclusion
Si votre travail Linux implique l'accès aux informations relatives aux périphériques de bloc, alors lsblk est une commande incontournable pour vous. Ici, dans ce tutoriel, nous avons discuté de plusieurs options de ligne de commande offertes par cet outil. Pour en savoir plus sur lsblk, rendez-vous sur sa page de manuel.