Si j'ai l'UUID d'une partition de lecteur, comment pourrais-je savoir si elle est montée ou non, en utilisant la ligne de commande?
lsblk
pourrait aider. Il ne peut imprimer que l'UUID et le point de montage, donc, étant donné l'UUID, il suffit de voir si le point de montage n'est pas vide:
uuid=foo
lsblk -o UUID,MOUNTPOINT | awk -v u="$uuid" '$1 == u {print $2}'
Alors:
uuid=foo
mountpoint=$(lsblk -o UUID,MOUNTPOINT | awk -v u="$uuid" '$1 == u {print $2}')
if [[ -n $mountpoint ]]
then
echo mounted
else
echo not mounted
fi
Puisque lbslk
peut agir sur des périphériques spécifiques, vous pouvez également effectuer les tâches suivantes:
mountpoint=$(lsblk -o MOUNTPOINT "/dev/disk/by-uuid/$uuid" | awk 'NR==2')
Avec la première méthode, il n'y aura pas d'erreur si cet UUID ne provient pas d'un disque actuellement connecté. Avec la deuxième méthode, lsblk
affichera une erreur si /dev/disk/by-uuid/$uuid
n'existe pas.
lsblk -o UUID,SIZE,MOUNTPOINT
Si vous voulez seulement une ligne avec votre UUID et votre point de montage ($ UUID représente votre UUID):
lsblk -o UUID,MOUNTPOINT|grep "$UUID"
Le point de montage sera vide s'il est démonté. Essayez lsblk -h
pour plus d'options.
Utilisez awk
pour imprimer le résultat. Si NF
(Nombre de champs) est supérieur à un, cela signifie qu'il a un point de montage:
lsblk -o UUID,MOUNTPOINT|grep "$UUID"|awk '{if (NF>1) print $1" is mounted"; else print $1" is unmounted";}'
Si vous voulez les détails à partir de mount
for uuid in /dev/disk/by-uuid/*; do if [[ "$uuid" =~ .*your-UUID-here.* ]]; then echo $(mount | grep "$(readlink -e "$uuid")") ; fi; done
remplacez your-UUID-here
par votre UUID
plus lisiblement:
for uuid in /dev/disk/by-uuid/*; do
if [[ "$uuid" =~ .*your-UUID-here.* ]]
then echo $(mount | grep "$(readlink -e "$uuid")")
fi
done
exemple de sortie:
/dev/mmcblk1p2 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
Vous pouvez simplement faire vérifier que la chaîne n'est pas nulle et echo "monté":
for uuid in /dev/disk/by-uuid/*; do if [[ "$uuid" =~ .*your-UUID-here.* ]]; then if [[ $(mount | grep "$(readlink -e "$uuid")") ]]; then echo "mounted"; fi; fi; done
mais d'autres ont donné de meilleures façons de le faire :)
Ma solution
procfs
, donc pas de problème de formatage de sortie de commande étrange,my_uuid=...
while IFS=' ' read -r dev mnt remainder; do
case "$dev" in
/dev/*)
if [ "$dev" -ef "/dev/disk/by-uuid/$my_uuid" ]; then
echo "$my_uuid ($dev) mounted at $mnt"
break
fi;;
esac
done < /proc/mounts
Ubuntu utilise le démon UDisks2
, qui interroge de nombreuses informations sur les systèmes de fichiers. Nous pouvons utiliser udisksctl
et filtrer sa sortie pour trouver un moyen rapide et sale de trouver les informations dont nous avons besoin:
udisksctl dump | python -c 'import sys;lines = [l.strip() for l in sys.stdin if " UUID" in l or " MountPoints:" in l];print "\n".join(lines)'
Ce que vous voyez ci-dessus imprimera essentiellement les UUID des systèmes de fichiers et leurs points de montage. Par inspection visuelle, vous pouvez maintenant déterminer quel UUID est monté et ce qui ne l’est pas.
$ udisksctl dump | python -c 'import sys;lines = [l.strip() for l in sys.stdin
> if " UUID" in l or " MountPoints:" in l];print "\n".join(lines)'
MountPoints: /
UUID: 000b5321-01
MountPoints:
UUID: bbf23a81-808e-11e4-a445-201a06d7b0e9
MountPoints:
UUID: bbf23a87-808e-11e4-a445-201a06d7b0e9
MountPoints:
UUID: bbf23a89-808e-11e4-a445-201a06d7b0e9
MountPoints:
UUID: bbf23a8f-808e-11e4-a445-201a06d7b0e9
MountPoints:
UUID: 02fe8de2-a408-11e4-8eeb-f0761c8c6df7
MountPoints: /mnt/HDD
UUID: 53827413-0b7e-4ae6-ae09-1daea529d6a1
En me basant sur les excellentes réponses que j'ai reçues pour cette question, j'ai compris qu'il est beaucoup plus facile de travailler avec des noms d'appareils. Pour obtenir le nom du périphérique à partir de l'UUID:
disk_uuid=foo
disk_devname=$(blkid -U "$disk_uuid")
Ce qui signifie que je peux en déduire rapidement s'il est monté en greppant la sortie de df
:
df | grep -q "$disk_devname" && echo "Disk mounted" || echo "Disk not mounted"
Ou en utilisant le code dans réponse de Mur , qui a l'avantage supplémentaire de me dire où le lecteur est monté:
mountpoint=$(lsblk -no MOUNTPOINT "$disk_devname")
if [[ -n "$mountpoint" ]]; then
echo "Disk is mounted at $mountpoint"
else
echo "Disk not mounted"
fi
Vous pouvez utiliser la commande df
pour afficher les systèmes de fichiers montés et leur point de montage. Voici un exemple de ma machine ... la partition sdb3
, sur laquelle un autre système est installé, n'est pas montée, donc non répertoriée (les partitions sont renommées, c'est pourquoi les noms sont affichés à la place des UUID):
df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 8100756 0 8100756 0% /dev
tmpfs 1625296 9952 1615344 1% /run
/dev/sdb4 41022688 7074348 31834804 19% /
tmpfs 8126464 19456 8107008 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 8126464 0 8126464 0% /sys/fs/cgroup
/dev/loop0 76800 76800 0 100% /snap/ubuntu-core/423
/dev/sdb1 4186108 12160 4173948 1% /boot/efi
zsc-lxd/containers/uc-1604-1 58620160 516736 58103424 1% /var/lib/lxd/containers/uc-1604-1.zfs
zsc-lxd/containers/uc-1610-1 58637184 533760 58103424 1% /var/lib/lxd/containers/uc-1610-1.zfs
tmpfs 1625292 124 1625168 1% /run/user/1000
/dev/sdb5 61796348 10766892 47867344 19% /media/cl/virtual
/dev/sda4 206293688 13419740 182371804 7% /media/cl/system
/dev/sda3 206293688 32116600 163674944 17% /media/cl/rescue
/dev/sda2 206293688 1867604 193923940 1% /media/cl/media
/dev/sda1 206293688 2539712 193251832 2% /media/cl/data
S'il existe un lien nommé "the_UUID
" dans /dev/disk/by-uuid/
, la partition est montée. Sur mon Ubuntu 14.04.5 (YMMV):
$ ll /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 9 Nov 14 04:30 0123-4567 -> ../../sde
lrwxrwxrwx 1 root root 10 Nov 11 00:25 06ee65d5-26f7-41f3-91ab-3497021a6213 -> ../../dm-0
lrwxrwxrwx 1 root root 10 Nov 11 00:25 12817b99-9d2b-4357-a4ca-c11eab672a20 -> ../../sdb6
lrwxrwxrwx 1 root root 10 Nov 11 00:25 362254e8-2b99-442d-8ad9-4a348bc08032 -> ../../sda1
lrwxrwxrwx 1 root root 10 Nov 11 00:25 83a64b80-5a37-4659-b797-221b88ef41f8 -> ../../sdb5
lrwxrwxrwx 1 root root 10 Nov 11 00:25 ff359af0-d996-4949-b27e-f24ce453c48c -> ../../sdc1