Plutôt que d'utiliser mount | grep
, j'aimerais utiliser mount -l -t bind
, mais cela ne fonctionne pas et -t none
montre toutes les montures.
la source
Plutôt que d'utiliser mount | grep
, j'aimerais utiliser mount -l -t bind
, mais cela ne fonctionne pas et -t none
montre toutes les montures.
Les montages de liaison ne sont pas un type de système de fichiers, ni un paramètre d'un système de fichiers monté; ce sont les paramètres d'une opération de montage . Pour autant que je sache, les séquences de commandes suivantes conduisent à des états système essentiellement identiques en ce qui concerne le noyau:
mount /dev/foo /mnt/one; mount --bind /mnt/one /mnt/two
mount /dev/foo /mnt/two; mount --bind /mnt/two /mnt/one
Donc, la seule façon de se souvenir des montures qui étaient des montures de liaison est le journal des mount
commandes restantes /etc/mtab
. Une opération de montage de liaison est indiquée par l' option debind
montage (ce qui entraîne l'ignorance du type de système de fichiers). Mais n'a pas la possibilité de répertorier uniquement les systèmes de fichiers montés avec un ensemble particulier d'ensembles d'options. Par conséquent, vous devez effectuer votre propre filtrage.mount
mount | grep -E '[,(]bind[,)]'
</etc/mtab awk '$4 ~ /(^|,)bind(,|$)/'
Notez que cela /etc/mtab
n'est utile ici que s'il s'agit d'un fichier texte géré par mount
. Certaines distributions configurées à la place /etc/mtab
comme un lien symbolique /proc/mounts
; /proc/mounts
est principalement équivalent à, /etc/mtab
mais présente quelques différences, dont l'une ne suit pas les montages de liaison.
Une information qui est conservée par le noyau, mais non représentée dans /proc/mounts
, est lorsqu'un point de montage n'affiche qu'une partie de l'arborescence de répertoires sur le système de fichiers monté. En pratique, cela se produit principalement avec les montures de liaison:
mount --bind /mnt/one/sub /mnt/partial
Dans /proc/mounts
, les entrées pour /mnt/one
et /mnt/partial
ont le même périphérique, le même type de système de fichiers et les mêmes options. Les informations qui /mnt/partial
ne montrent que la partie du système de fichiers enracinée /sub
sont visibles dans les informations de point de montage par processus dans /proc/$pid/mountinfo
(colonne 4). Les entrées ressemblent à ceci:
12 34 56:78 / /mnt/one rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered
12 34 56:78 /sub /mnt/partial rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered
findmnt | fgrep [
comme expliqué ici .mount --version
utilisez-vous pour enregistrer desbind
informations/etc/mtab
? J'utilise la version 2.20.1 et j'ai regardé les dernières sources et dans aucun cas je ne vois des informations de liaison enregistrées n'importe où qui vous permettraient de rechercherbind
. D'un autre côté, ce que j'ai suggéré dans ma réponse consiste en fait à lister les montages créés avec--bind
et en utilisant l'bind
option .</etc/mtab awk …
est compatible POSIX (j'oublie s'il est pris en charge dans Bourne). Veuillez vérifier vos faits. Je peux confirmer qu'il/etc/mtab
a l'bind
option pour un système de fichiers monté avecmount --bind /source /target
sur Debian stable (montage depuis util-linux-ng 2.17.2).mount
et/etc/mtab
. Vous utilisez Debian stable qui a l'ancienne version d'util-linux-ng; J'utilise Debian testing qui a une version plus récente qui ne semble plus avoir le même/etc/mtab
comportement, ce qui est peut - être pourquoi @rozcietrzewiacz n'a pas vubind
dans dans/etc/mtab
si sa distribution utilise également une version plus récente?findmnt
comme réponse. Cela ne fonctionne que si le répertoire cible n'est pas un autre point de montage, soit dit en passant. Essayez par exemplesudo mount --bind / foo && findmnt | grep foo
Peut-être que cela pourrait faire l'affaire:
Exemple:
la source
/
lui-même est monté en bind, par exemple, la sortie n'a pas de[...]
.Le noyau ne gère pas les montages de liaison différents des montages normaux après coup. Les seuls diffèrent dans ce qui se passe pendant les
mount
courses.Lorsque vous montez un système de fichiers (par exemple avec
mount -t ext4 /dev/sda1 /mnt
), le noyau (un peu simplifié) effectue trois étapes:-t
ou utilisez-t auto
mount
devine le type pour vous et fournit le type deviné au noyau)nodev
par exemple, est une option sur le point de montage, pas sur le système de fichiers. Vous pouvez avoir un montage de liaison avecnodev
et un sans)Si vous effectuez un montage de liaison (par exemple avec
mount --bind /a /b
), les événements suivants se produisent:(Je vais sauter
mount --move
, car ce n'est pas pertinent pour la question.)Cela ressemble beaucoup à la façon dont les fichiers sont créés sous Linux:
Si vous créez un lien dur, les événements suivants se produisent:
Comme vous pouvez le voir, le fichier créé et le lien dur sont indiscernables:
Mais , comme vous pouvez identifier tous les liens physiques vers un fichier en comparant les numéros d'inode, vous pouvez identifier tous les montages sur un système de fichiers en comparant les principaux: les nombres mineurs de montages.
Vous pouvez le faire avec
findmnt -o TARGET,MAJ:MIN
ou en consultant directement/proc/self/mountinfo
( voir la documentation du noyau Linux pour plus d'informations ).Le script Python suivant répertorie tous les montages de liaison. Il suppose que le point de montage le plus ancien avec le chemin relatif le plus court vers la racine du système de fichiers monté est le montage d'origine.
la source
la source
Ceci est similaire à l'autre réponse findmnt, mais évite le problème de formatage.
Pour afficher tous les sous-montages:
Pour afficher tous les sous-systèmes de fichiers de type ext4:
Pour afficher tous les montages à l'exception des sous-montages:
Pour afficher tous les montages de systèmes de fichiers de type ext4 hors sous-montages:
Le "-n" supprime les en-têtes et le "--list" supprime les lignes du format "arborescence".
Testé sur l'étirement Debian.
la source