Recherche de site Web

Commande findmnt : Interroger les systèmes de fichiers sous Linux en toute simplicité


Findmnt est un utilitaire gratuit et open source généralement inclus dans les packages de base de toutes les principales distributions Linux. Il est capable de lister tous les systèmes de fichiers montés ou de récupérer des données uniquement pour ceux que nous spécifions. Dans ce tutoriel, nous apprenons à utiliser findmnt et à interroger les systèmes de fichiers par type, options de montage et autres paramètres.

Dans ce tutoriel, vous allez apprendre :

  • Comment utiliser findmnt pour récupérer des informations sur les systèmes de fichiers montés
  • Comment rechercher des systèmes de fichiers par LABEL, UUID, nom et point de montage
  • Comment rechercher des systèmes de fichiers par type et options de montage

CatégorieExigences, conventions ou version du logiciel utilisé
SystèmeIndépendant de la distribution
Logicielfindmnt
AutreNone
Conventions# – nécessite que les commandes linux données soient exécutées avec les privilèges root, soit directement en tant qu’utilisateur root, soit en utilisant la commande sudo
$– nécessite que les commandes linux données soient exécutées en tant qu’utilisateur régulier non privilégié

Utilisation de base de Findmnt

La façon la plus simple d’utiliser findmnt consiste à l’invoquer sans aucune option ni argument ; Dans ce cas, l’utilitaire affiche des informations sur tous les systèmes de fichiers montés, organisées en quatre colonnes :

  • CIBLE
  • SOURCE
  • FSTYPE
  • OPTIONS

La première colonne, « TARGET », contient des informations sur le point de montage du système de fichiers ; le second, « SOURCE », contient le chemin du périphérique source qui héberge le système de fichiers. La troisième colonne, « FSTYPE », rapporte des informations sur le type de système de fichiers (par exemple ext4 ou XFS) ; Enfin, la quatrième colonne affiche les options de montage utilisées pour le système de fichiers.

Celles mentionnées ci-dessus sont les colonnes par défaut utilisées dans la sortie findmnt. Pour récupérer la liste de tous ceux disponibles, ainsi que leur brève description, nous pouvons appeler l’utilitaire avec l’option -H :

findmnt -H
    ACTION <string>        action detected by --poll
     AVAIL <string|number> filesystem size available, use <number> if --bytes is given
      FREQ <integer>       dump(8) period in days [fstab only]
    FSROOT <string>        filesystem root
    FSTYPE <string>        filesystem type
FS-OPTIONS <string>        FS specific mount options
        ID <integer>       mount ID
 INO.AVAIL <string>        number of available inodes
 INO.TOTAL <string>        total number of inodes
  INO.USED <string>        number of used inodes
  INO.USE% <string>        percentage of INO.USED divided by INO.TOTAL
     LABEL <string>        filesystem label
   MAJ:MIN <string>        major:minor device number
OLD-OPTIONS <string>        old mount options saved by --poll
OLD-TARGET <string>        old mountpoint saved by --poll
   OPTIONS <string>        all mount options
OPT-FIELDS <string>        optional mount fields
    PARENT <integer>       mount parent ID
 PARTLABEL <string>        partition label
  PARTUUID <string>        partition UUID
    PASSNO <integer>       pass number on parallel fsck(8) [fstab only]
PROPAGATION <string>        VFS propagation flags
      SIZE <string|number> filesystem size, use <number> if --bytes is given
    SOURCE <string>        source device
   SOURCES <string>        all possible source devices
    TARGET <string>        mountpoint
       TID <integer>       task ID
      USED <string|number> filesystem size used, use <number> if --bytes is given
      USE% <string>        filesystem use percentage
      UUID <string>        filesystem UUID
VFS-OPTIONS <string>        VFS specific mount options

Récupération d’informations sur un système de fichiers spécifique

Comme nous l’avons déjà vu, lorsqu’il est invoqué sans aucune option ni argument, findmnt affiche des informations sur tous les systèmes de fichiers montés. C’est rarement utile : la plupart du temps, nous sommes intéressés par la collecte d’informations sur un système de fichiers spécifique, que nous pouvons référencer par nom de périphérique, étiquette, UUID, ou par numéro major :minor.

La façon la plus courante de rechercher un système de fichiers est probablement par son périphérique source :

findmnt /dev/mapper/vg_system-lv_root

Une autre option consiste à passer le répertoire sur lequel on sait que le filesytem est monté (son point de montage) :

findmnt /

Findmnt est capable de faire correspondre l’argument avec les colonnes SOURCE et TARGET, à moins que nous n’utilisions explicitement les options --target, --mountpoint ou --source. Dans l’exemple ci-dessous, l’utilitaire ne renvoie aucune sortie, car il interprète l’argument comme un point de montage :

findmnt --mountpoint /dev/mapper/vg_system-lv_root

Pour référencer un système de fichiers spécifique, nous pouvons également utiliser son UUID ou LABEL si nous les connaissons à l’avance. Supposons que nous voulions récupérer des informations sur le système de fichiers avec l’UUID 331392ba-8966-4877-828c-99cc4bc418ec ; Nous courrions :

findmnt UUID=331392ba-8966-4877-828c-99cc4bc418ec

De même, pour référencer un système de fichiers par son LABEL, nous exécuterions :

findmnt LABEL=backups

Recherche dans un fichier spécifique

Par défaut, findmnt recherche les systèmes de fichiers dans les fichiers /etc/fstab, /etc/mtab et /proc/self/mountinfo. Certaines options nous permettent de modifier ce comportement. L’option -s (ou --fstab), par exemple, fait en sorte que findmnt ne considère que les systèmes de fichiers dans le fichier /etc/fstab ; De même, l’option -m ( --mtab) restreint la recherche au contenu du fichier /etc/mtab, et -k, (abréviation de --kernel), limite la recherche au fichier /proc/self/mountinfo.

Nous pouvons également fournir le chemin d’un fichier alternatif personnalisé, en utilisant l’option -F (abréviation de --tab-file). Pour rechercher des systèmes de fichiers dans le fichier /etc/fstab-backup, par exemple, nous exécuterions :

findmnt -F /etc/fstab-backup

Filtrage des résultats par type de système de fichiers

Dans certains cas, nous ne voulons pas cibler un système de fichiers spécifique, ni obtenir la liste de tous les systèmes montés. Au lieu de cela, nous pouvons vouloir appliquer un filtre basé sur un paramètre. Pour que findmnt ne renvoie que les systèmes de fichiers d’un certain type, par exemple, nous pouvons utiliser l’option -t (--type), et passer la liste des types que nous voulons utiliser comme filtre. Supposons que nous voulions collecter des informations sur tous les systèmes de fichiers vfat ou XFS montés, nous exécuterions :

findmnt -t vfat,xfs

Filtrage des résultats par options de montage

Une autre option consiste à appliquer un filtre basé sur les options de montage. Pour utiliser cette fonctionnalité, tout ce que nous avons à faire est d’utiliser l’option -O (abréviation de --options) et de fournir la liste d’options séparées par des virgules que nous voulons utiliser comme filtre. Pour récupérer la liste de tous les fichiersytems montés avec les options « relatime » et « ro », par exemple, nous exécuterions :

findmount -O relatime,ro

Lorsque plusieurs options sont spécifiées, seuls les systèmes de fichiers montés avec toutes les options spécifiées correspondront à la requête (cela fonctionne comme un AND logique).

Une autre chose à noter est que, par défaut, lors de l’utilisation d’une option avec le préfixe « no » (par exemple nosuid), l’expression ne correspondra pas littéralement ; Au lieu de cela, il sera utilisé comme un filtre « d’exclusion », et il correspondra à tous les systèmes de fichiers montés sans l’option. Jetez un coup d’œil au contenu de ce fichier /etc/fstab :

/         UUID=331392ba-8966-4877-828c-99cc4bc418ec xfs    defaults,x-systemd.device-timeout=0
/boot     UUID=7e28e28a-fc1b-4652-8f86-4e2bdefdad85 xfs    defaults,nosuid
/boot/efi UUID=ABBE-D50B                            vfat   defaults,uid=0,gid=0,umask=077,shortname=winnt
/home     UUID=244ed50a-4223-41a5-9edb-658488d02279 xfs    defaults,x-systemd.device-timeout=0

Comme vous pouvez le voir, le deuxième système de fichiers de la liste, celui avec l’UUID 7e28e28a-fc1b-4652-8f86-4e2bdefdad85, est le seul qui a « nosuid » a une option de montage. Exécutons findmnt avec l’option -O nosuid, et voyons ce qu’elle renvoie :

findmnt --fstab -O nosuid 

Le résultat de la commande ci-dessus est :

TARGET    SOURCE                                    FSTYPE OPTIONS
/         UUID=331392ba-8966-4877-828c-99cc4bc418ec xfs    defaults,x-systemd.device-timeout=0
/boot     UUID=7e28e28a-fc1b-4652-8f86-4e2bdefdad85 xfs    defaults,nosuid
/boot/efi UUID=ABBE-D50B                            vfat   defaults,uid=0,gid=0,umask=077,shortname=winnt
/home     UUID=244ed50a-4223-41a5-9edb-658488d02279 xfs    defaults,x-systemd.device-timeout=0

La « requête » que nous avons utilisée, d’une manière inattendue, au lieu de correspondre uniquement au système de fichiers monté avec l’option « nosuid », a renvoyé tous ceux sans l’option « suid », donc tous. Si nous voulons que l’expression corresponde littéralement aux systèmes de fichiers avec l’option « nosuid », nous devons préfixer l’option avec un « + » :

findmnt --fstab -O +nosuid

Avec cette syntaxe, l’expression correspond littéralement à l’option « nosuid » et donne le résultat attendu :

TARGET SOURCE                                    FSTYPE OPTIONS
/boot  UUID=7e28e28a-fc1b-4652-8f86-4e2bdefdad85 xfs    defaults,nosuid

Formatage de la sortie findmnt

Une série d’options nous permet de modifier et de formater le résultat de la commande findmnt. Lorsque nous utilisons findmnt dans des scripts shell, par exemple, nous voulons probablement supprimer la ligne d’en-tête et modifier le comportement de l’utilitaire pour qu’il ne renvoie qu’une seule information.

La ligne d’en-tête peut être supprimée en utilisant l’option -n (abréviation de --noheadings), tandis que pour que l’utilitaire ne renvoie que des informations spécifiques, nous pouvons utiliser l’option -o (--output) et passer la liste de colonnes séparées par des virgules qui nous intéressent, en tant qu’argument. Dans l’exemple ci-dessous, nous stockons le fstype du système de fichiers monté sur / dans la variable « $root_fstype » :

root_fstype="$(findmnt --noheadings --output FSTYPE /)"
echo "${root_fstype}"
xfs

Findmnt, par défaut, organise sa sortie dans un format arborescent, qui montre également les relations entre les systèmes de fichiers. Nous pouvons changer cela et formater la sortie au format JSON, en utilisant l’option -J (--json). Supposons que nous voulions réorganiser le système de fichiers contenu dans le fichier /etc/fstab en JSON, par exemple, nous exécuterions :

findmnt -J --fstab

Nous obtiendrions un résultat similaire à ce qui suit :

{
  "filesystems": [
     {
        "target": "/",
        "source": "UUID=331392ba-8966-4877-828c-99cc4bc418ec",
        "fstype": "xfs",
        "options": "defaults,x-systemd.device-timeout=0"
     },{
        "target": "/boot",
        "source": "UUID=7e28e28a-fc1b-4652-8f86-4e2bdefdad85",
        "fstype": "xfs",
        "options": "defaults,nosuid"
     },{
        "target": "/boot/efi",
        "source": "UUID=ABBE-D50B",
        "fstype": "vfat",
        "options": "defaults,uid=0,gid=0,umask=077,shortname=winnt"
     },{
        "target": "/home",
        "source": "UUID=244ed50a-4223-41a5-9edb-658488d02279",
        "fstype": "xfs",
        "options": "defaults,x-systemd.device-timeout=0"
     }
  ]
}

Alternativement, nous pouvons utiliser le format « list » en passant l’option -l (--list). Ce format est automatiquement utilisé lorsque nous appliquons des filtres pour restreindre une requête.

Conclusions

Dans ce tutoriel, nous avons appris à utiliser l’utilitaire findmnt pour récupérer des informations sur les systèmes de fichiers montés sous Linux. L’utilitaire est installé par défaut dans pratiquement toutes les distributions majeures. Nous avons vu comment lister tous les systèmes de fichiers montés, comment référencer un système de fichiers par UUID, LABEL, nom et point de montage, et comment filtrer les résultats de findmnt par options de montage et types de système de fichiers.

Articles connexes: