Sous Linux, vous pouvez obtenir des informations sur les points de montage directement à partir du noyau dans /proc/mounts
. Le mount
programme enregistre des informations similaires dans /etc/mtab
. Les chemins et les options peuvent être différents, car ils /etc/mtab
représentent ce qui est mount
passé au noyau tandis que /proc/mounts
les données sont vues à l'intérieur du noyau. /proc/mounts
est toujours à jour alors qu'il /etc/mtab
pourrait ne pas l'être s'il /etc
était en lecture seule à un moment qui n'était pas prévu par les scripts de démarrage. Le format est similaire à /etc/fstab
.
Dans les deux fichiers, le premier champ séparé par des espaces contient le chemin du périphérique et le deuxième champ contient le point de montage.
awk -v needle="$device_path" '$1==needle {print $2}' /proc/mounts
ou si vous n'avez pas awk:
grep "^$device_path " /proc/mounts | cut -d ' ' -f 2
Il existe un certain nombre de cas marginaux où vous n'obtiendrez peut-être pas ce que vous attendez. Si l'appareil a été monté via un chemin différent /dev
qui désigne le même appareil, vous ne le remarquerez pas de cette façon. Dans /proc/mounts
, les montures de reliure ne peuvent être distinguées de l'original. Il peut y avoir plusieurs correspondances si un point de montage en ombre une autre (ce qui est inhabituel).
Dans /proc/self
ou /proc/$pid
, il existe un mounts
fichier par processus qui imite le fichier global. Les informations de montage peuvent varier entre les processus, par exemple en raison de chroot
. Il existe un fichier supplémentaire appelé mountinfo
qui a un format différent et comprend plus d'informations, en particulier les numéros majeurs et mineurs de l'appareil. De la documentation :
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
(1) mount ID: unique identifier of the mount (may be reused after umount)
(2) parent ID: ID of parent (or of self for the top of the mount tree)
(3) major:minor: value of st_dev for files on filesystem
(4) root: root of the mount within the filesystem
(5) mount point: mount point relative to the process's root
(6) mount options: per mount options
(7) optional fields: zero or more fields of the form "tag[:value]"
(8) separator: marks the end of the optional fields
(9) filesystem type: name of filesystem of the form "type[.subtype]"
(10) mount source: filesystem specific information or "none"
(11) super options: per super block options
Donc, si vous recherchez un appareil par numéro, vous pouvez le faire comme ceci:
awk -v dev="$major:minor" '$3==dev {print $5}'
awk -v dev="$(stat -L -c %t:%T /dev/block/something)" '$3==dev {print $5}'
Gilles 'SO- arrête d'être méchant'
la source
udisks
lien symbolique (dans / dev / disk / by-label / ...). Mais je peux résoudre un nœud de périphérique en utilisantreadlink -f
. J'aime l'/proc/mounts
idée, je pense que cela pourrait être un peu plus fiable que/etc/mtab
.mountinfo
. Appelezstat
pour obtenir les numéros de périphérique (voir ma réponse mise à jour, j'ai oublié d'inclure la commande plus tôt).-d " "
option pourcut
dans cettegrep
commande.findmnt
etlsblk
des commandes dédiées qui font le travail dur (plus robuste) pour vousSous Linux, vous pouvez désormais utiliser la
findmnt
commande depuisutil-linux
(depuis la version 2.18):Ou
lsblk
(également depuisutil-linux
, depuis 2.19):Celui-ci est également utile pour trouver tout le système de fichiers monté sous un périphérique spécifique (disque ou partition ...):
Pour obtenir le point de montage uniquement:
Ci
findmnt
- dessus revient avec un état de sortie d'échec si le périphérique n'est pas monté, nonlsblk
.Alors:
la source
La
mount
commande sans arguments listera tous les systèmes de fichiers actuellement montés; vous pouvez le fairegrep
pour le disque que vous voulez (ougrep
/etc/mtab
, dans lequel le fichiermount
lit les informations):la source
grep ${NODE} /etc/mtab | cut -d ' ' -f 2
devrait le faire.grep ^"${NODE}[[:space:]]\+" /etc/mtab | cut -d ' ' -f 2"
soit beaucoup moins fragile ...Oui. Vous pouvez voir Afficher uniquement les points de montage intéressants / Filtrer les types non intéressants ou répertorier les répertoires sous
/
qui ne sont pas sous le même point de montage pour un exemple d'utilisation, mais il y a aussi un bref aperçu ci-dessous. La commande que vous demandez estfindmnt
(maislsblk
pourrait également servir) :Maintenant, comme vous pouvez le voir,
/dev/sda1
est monté sur/esp
. Je me demande si elle est montée ailleurs aussi?Aha. Je vois. Un sous-dossier est également
--bind
monté sur le démarrage. D'accord...Rien. Que se passe-t-il?
Ohhh ... Eh bien, c'est bien. Hmmm ...
Oh, ouais, c'est vraiment sympa.
Maintenant, remettons sda1 à sa place et réessayons ...
Mais où ai-je trouvé cette commande magique?
la source
Je ne connais pas de moyen propre et simple de détecter si oui ou non un nœud de périphérique
/dev
est monté. C'est pourtant ce que je peux offrir. Il gère les appareils montés directement (/dev/sda1
) et les appareils montés par UUID (/dev/disk/by-uuid/aa4e7b08-6547-4b5a-85ad-094e9e1af74f
). Il se casse si les noms de votre appareil contiennent des espaces.La fonction écrit l'entrée de
/proc/mounts
à stdout si elle est trouvée, définissant également l'état de sortie sur 0. Sinon, l'état de sortie est 1.la source
Exécutez simplement la commande ci-dessous:
la source