Existe-t-il une commande simple qui prend le nœud de périphérique d'un disque en entrée et me dit où (et si) ce disque est monté ? Est-il possible d'obtenir le point de montage par lui-même, afin que je puisse le passer à une autre commande ?
Je travaille sur un système live Debian Squeeze avec une installation minimale (je peux installer des packages supplémentaires si nécessaire).
Réponse acceptée :
Sous Linux, vous pouvez obtenir des informations sur les points de montage directement depuis le noyau dans /proc/mounts
. Le mount
le programme enregistre des informations similaires dans /etc/mtab
. Les chemins et les options peuvent être différents, comme /etc/mtab
représente ce que mount
passé au noyau alors que /proc/mounts
montre les données telles qu'elles sont vues à l'intérieur du noyau. /proc/mounts
est toujours à jour alors que /etc/mtab
peut-être pas si /etc
était en lecture seule à un moment donné, ce 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 second 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 extrêmes où vous pourriez ne pas obtenir ce que vous attendez. Si le périphérique a été monté via un chemin différent dans /dev
qui désigne le même appareil, vous ne le remarquerez pas de cette façon. Dans /proc/mounts
, les supports de liaison sont indiscernables de l'original. Il peut y avoir plus d'une correspondance si un point de montage en masque un autre (c'est inhabituel).
Dans /proc/self
ou /proc/$pid
, il existe un mounts
par processus fichier 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 majeur et mineur de l'appareil. À partir 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}'