Affichage uniquement des points de montage «intéressants» / filtrage des types non intéressants


21

J'avais l'habitude mountde montrer les disques montés, je ne veux pas voir ceux qui ne sont pas si intéressants (c'est-à-dire non physiques). Donc j'avais l'habitude d'avoir un script mntqui faisait:

mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts) '

sous Ubuntu 8.04 et m'a montré ext3et reiserfsmontez uniquement les points. Cette ligne est en fait commentée et maintenant j'utilise (pour Ubuntu 12.04):

mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts|debugfs|rpc_pipefs|nfsd|securityfs|fusectl|devtmpfs) '

pour afficher uniquement mes partitions ext4et zfs(j'ai abandonné l'utilisation reiserfs).

Maintenant, je me prépare pour Ubuntu 14.04 et le script doit être étendu à nouveau (cgroup, pstore). Existe-t-il une meilleure façon de procéder sans avoir à étendre le script? Je ne suis intéressé que par les disques physiques montés et les lecteurs réseau montés ( nfs, cifs).


df -Th | grep -Ev '(udev | tmpfs)'
Nadir

alias mnt="mount | grep '^/dev'"J'utilise ceci pour afficher les "appareils" uniquement.
pcarvalho

Réponses:


6

L' -toption pour mountfonctionne également lors de l'affichage des points de montage et prend une liste de types de systèmes de fichiers séparés par des virgules:

mount -t ext3,ext4,cifs,nfs,nfs4,zfs

Je ne sais pas si c'est une meilleure solution. Si vous commencez à utiliser (par exemple btrfs) et oubliez d'ajouter cela à la liste, vous ne le verrez pas et vous ne le manquerez peut-être pas. Je préfère filtrer activement tout nouveau système de fichiers "inintéressant" lorsqu'ils apparaissent, même si cette liste s'allonge.

Vous pouvez essayer activement uniquement greples points de montage intéressants similaires à ce que @Graeme a proposé, mais comme vous êtes également intéressé par les montages NFS / CIFS (qui ne commencent pas par /), vous devez faire:

mount | grep -E --color=never  '^(/|[[:alnum:]\.-]*:/)'

(le --colorest nécessaire pour supprimer la coloration de l'initiale /sur les lignes trouvées). Comme Graeme l'a souligné, le montage basé sur le nom des partages NFS devrait également être autorisé. Le motif sélectionne des lignes commençant par un /ou toute combinaison de "a-zA-Z0-9". suivi de :/(pour les montages NFS).


La deuxième option regarde ce que je veux.
Johran

Les nfsmontages s'affichent-ils toujours avec l'adresse IP ou peut-il y avoir également des noms d'hôtes? Si c'est le cas, cela ne fonctionnera pas.
Graeme

@Graeme Vous avez raison (m'a pris un certain temps pour vérifier cela car le montage NFS ne fonctionne pas). Mis à jour.
Anthon

Les noms d'hôtes peuvent aussi avoir un trait d'union :)
Graeme

1
considérez aussifindmnt
ctrl-alt-delor

38

Ne pas utiliser mount.

De man mount:

  • La liste.
    • Le mode de liste est conservé pour une compatibilité descendante uniquement.
    • Pour une sortie plus robuste et personnalisable, utilisez findmnt(8) , en particulier dans vos scripts.
    • Notez que les caractères de contrôle dans le nom du point de montage sont remplacés par ? .

Utilisez findmnt, comme le suggère la documentation. Voici quelques options intéressantes décrites par findmnt --help:

  • -i ou --invert
    • inverser le sens de l'appariement
  • -R ou --submounts
    • imprimer tous les sous-montages pour les systèmes de fichiers correspondants
  • -t ou --typeslist
    • limiter l'ensemble des systèmes de fichiers par types de FS

Ce ne sont que quelques-uns des nombreux filtres que vous pouvez appliquer sur la ligne de commande.

man findmnt
  • EXEMPLES
    • findmnt --fstab -t nfs
    • Imprime tous les systèmes de fichiers NFS définis dans /etc/fstab.
    • findmnt --fstab /mnt/foo
    • Imprime tous les /etc/fstabsystèmes de fichiers où se trouve le répertoire de point de montage /mnt/foo. Il imprime également les --bindmontages où se /mnt/footrouve une source.

Vous pourriez utiliser:

findmnt -it sysfs,cgroup,proc,devtmpfs,devpts,pstore,debugfs,hugetlbfs,mqueue,configfs

Cela devrait filtrer tous les pseudo-systèmes de fichiers, je crois.

Pourtant, vous pouvez faire de même avec mount:

mount -t nosysfs,nodevtmpfs...

Une meilleure façon pourrait être d'utiliser l'une des commandes suivantes, qui est findmnt --helpdécrite comme indiqué:

  • findmnt -D ou findmnt --df
    • Imitez la sortie de df(1) . Cette option est équivalente -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGETmais exclut tous les pseudo-systèmes de fichiers. Utilisez --allpour imprimer tous les systèmes de fichiers.

Vous pouvez ajouter des champs de liste aux valeurs par défaut avec findmnt -Do+field,+field.... Vous pouvez spécifier votre propre liste de champs en utilisant uniquement les systèmes de fichiers -Daffichés en omettant les éléments +similaires findmnt -Dofield,field.


Merci, je ne savais pas que findmnt existait! Pour filtrer les systèmes de fichiers, vous pouvez utiliser$(awk '/nodev/ { print $2 }' /proc/filesystems | paste -sd,)
deltab

@deltab - si vous filtrez par option de montage, vous pouvez aussi le faire avec findmnt. Mais ce nodevn'est pas nécessairement une option limitée aux systèmes de fichiers non pseudo. D'un autre côté, findmnt -Dn'obtiendra que ceux-là.
mikeserv

1
comment puis-je vous donner plus d'un +1 pour cela? Super, super trouvaille!
insaner

4
@insaner - c'est plus que suffisant, je vous assure. Je suis très flatté, merci. Mais au fait, si findmntvous êtes surpris, vous voudrez peut-être un peu util-linuxfou dans le paquet - libmount et ses amis ont vu des mises à jour assez importantes dans un passé pas trop lointain. Il y a des trucs assez cool là-dedans. Vous aimerez peut-être aussi un aperçu des espaces de noms de montage et des arborescences de montage partagées.
mikeserv

2
@insaner - à titre d'exemple, pour pratiquement tous les cas où vous voudrez peut-être utiliser un lien symbolique, un --bindmontage vous fera mieux. Non seulement vous pouvez simplement le suivre et l'inverser, mais vous pouvez également gérer l'intégralité de l'arborescence d'indirection dans fstab. Et - avec des espaces de noms (voir unshareet nsenter), vous pouvez présenter différentes vues du système de fichiers par processus. Il est tout à fait acceptable, par exemple, de --bindmonter /dev/nullsur un fichier arbitraire uniquement pour un processus abitrary, de le faire sans accès root si fstab définit l'action, et à findmnt --poll -N<pid>l'état de montage actuel à votre gré.
mikeserv

8

Que diriez-vous:

mount | grep '^/[^/]'

Les points de montage relatifs aux disques physiques commenceront toujours par un /puisque le premier champ est le chemin vers un périphérique. cifsles montages commenceront par //donc exclure les lignes avec une seconde /pour les ignorer.

Mise à jour

J'ai mal lu la question, je pensais que vous vouliez exclure cifs et nfs. Essayez plutôt ceci:

 mount | grep -E '^[^ ]*[/:]'

1
Cela ne fonctionne pas. NFS ne s'affiche pas du tout, même si vous supprimez le [^] pour inclure les montures CIFS qui m'intéressent
Johran

@Johran, mis à jour
Graeme

4

Tard dans la fête, mais

Je ne veux pas voir ceux qui ne sont pas si intéressants (c'est-à-dire non physiques)

Si par physique , vous voulez dire bloquer les appareils connectés à votre PC, allez avec

$ lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sdb             8:16   0 238.5G  0 disk  
├─sdb1          8:17   0   100M  0 part  /boot
├─sdb2          8:18   0     1G  0 part  
├─sdb3          8:19   0    45G  0 part  /
└─sdb4          8:20   0 192.4G  0 part  
  └─ssdhomecr 254:0    0 192.4G  0 crypt /home
sdi             8:128  0 931.5G  0 disk  
├─sdi1          8:129  0   801G  0 part  
│ └─test      254:2    0   801G  0 crypt /mnt/esata
└─sdi2          8:130  0 130.6G  0 part  

Je l'utilise souvent avec le --fs/-fcommutateur (informations sur le système de fichiers)

$ lsblk -f 
NAME          FSTYPE      LABEL  UUID                                 MOUNTPOINT
sdb
├─sdb1        ext2        bootp  7cf4f62a-1111-4e2f-7536-4fc5ad38bd2c /boot
├─sdb2        swap        swapp  4aa6d4ae-11e7-4a35-8bf3-ab42313aca62
├─sdb3        ext4        sysp   b23338ad-5a4b54i54-a842-8164-a9a9a2a /
└─sdb4        crypto_LUKS        112c40c9-7fdd-4158-895c-5344d24c4a6d
  └─ssdhomecr ext4        homecr fc8a92cb-124f-4a0d-b88e-2055c06ffc3g /home
sdi
├─sdi1        crypto_LUKS        a7c9fg87-6962-43e3-b8c6-7605b181630e
│ └─test      ext2        esata1 124657dc-671a-4b7f-b8a7-b64d5341cabe /mnt/esata
└─sdi2        crypto_LUKS        1c5846bb-ce7e-4cbe-bb0a-b687758ea1dc

lsblkfait partie d' util-linux . De toute évidence, il ne montrera pas de supports de fusible ou de réseau.


1

N'utilisez pas l' -vinterrupteur.

Utilisation:

mount | grep -Ew 'ext4|ext3'

Cela ne vous montrera que ext4 et ext3. Si vous souhaitez afficher plus de systèmes de fichiers, ajoutez-les à l'expression régulière.

Par exemple, pour afficher les montages ext3, ext4, cifs et nfs, utilisez:

mount | grep -Ew 'ext4|ext3|cifs|nfs'


1
Le second s'affichera également nfsd on /proc/fs/nfsd type nfsd (rw)sur mon système, l'OP n'en veut pas, c'est pourquoi il type nfsd est filtré.
Anthon

@Anthon Merci de l'avoir signalé. J'essayais de montrer l'intérêt de ne pas utiliser le -v. J'ai mis à jour ma réponse. Soit dit en passant, pour ce que l'OP essaie de réaliser, votre méthode (en utilisant mount -t) est la meilleure.
Sree

1
Je ne sais pas si -tc'est mieux moi-même. Que j'oublierais d'étendre (si je commence à utiliser btrfsou xfs) est peu probable, mais oublier vfat( iso9660) pour les disques physiques montés automatiquement (USB) est réel. J'ai plutôt une chose notable à filtrer que d'en manquer une (invisible) que je veux.
Anthon

1

Une liste des systèmes de fichiers utilisant un périphérique de bloc comme stockage de sauvegarde peut être obtenue auprès de /proc/filesystems. Par exemple, vous pouvez l'utiliser comme suit:

mount -t "$(grep -v '^nodev' /proc/filesystems | cut -f2 | paste -s -d ,)"

Étant donné que vous souhaitez à la fois les systèmes de fichiers soutenus par un périphérique de bloc et les systèmes de fichiers réseau, cela n'élimine pas complètement la nécessité de maintenir une liste manuellement. Mais il vous suffirait alors de conserver une liste des systèmes de fichiers réseau que vous utilisez.

Je ne sais pas comment /proc/filesystemstraiteront les systèmes de fichiers qui utilisent plusieurs périphériques de bloc pour sauvegarder le stockage (c'est-à-dire les systèmes de fichiers avec une intégration RAID dans le système de fichiers). Vous devrez peut-être traiter ces spéciaux.


0

Meilleur que j'utilise comme alias:

df -Th | grep -Ev '(udev | tmpfs)' '

exemple de sortie:

# df -Th| grep -Ev '(udev|tmpfs)'
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/md3       ext4       39G  792M   36G   3% /
/dev/md2       ext4      487M   32M  426M   7% /boot
/dev/sda1      vfat      510M  152K  510M   1% /boot/efi
/dev/md5       ext4      7.2T  311M  6.8T   1% /var

mais certaines des réponses ci-dessus sont très utiles, je pourrais changer:

findmnt --df

lsblk -f

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.