How to check whether a partition is mounted by UUID?

Solution 1:

lsblk might help. It can print just the UUID and mount point, so, given the UUID, just see if the mount point is not empty:

uuid=foo
lsblk -o UUID,MOUNTPOINT | awk -v u="$uuid" '$1 == u {print $2}'

So:

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

Since lsblk can act on specific devices, you can also do:

mountpoint=$(lsblk -o MOUNTPOINT "/dev/disk/by-uuid/$uuid" | awk 'NR==2')

With the first method, there won't be an error if that UUID isn't from a currently connected disk. With the second method, lsblk error out if /dev/disk/by-uuid/$uuid doesn't exist.

Solution 2:

lsblk -o UUID,SIZE,MOUNTPOINT

If you only want one line with your UUID and mountpoint ($UUID represents your UUID):

lsblk -o UUID,MOUNTPOINT|grep "$UUID"

The mount point will be empty if it is unmounted. Try lsblk -h for more options.

Use awk to print the result. if NF (Number of fields) is more than one it means that it has a mount point:

lsblk -o UUID,MOUNTPOINT|grep "$UUID"|awk '{if (NF>1) print $1" is mounted"; else print $1" is unmounted";}'

Solution 3:

If you want the details as from mount

for uuid in /dev/disk/by-uuid/*; do if [[ "$uuid" =~ .*your-UUID-here.* ]]; then echo $(mount | grep "$(readlink -e "$uuid")") ; fi; done

replace your-UUID-here with your UUID

more readably:

 for uuid in /dev/disk/by-uuid/*; do 
   if [[ "$uuid" =~ .*your-UUID-here.* ]]
     then echo $(mount | grep "$(readlink -e "$uuid")")
   fi
 done

output example:

/dev/mmcblk1p2 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)

You can just make it check that the string is not null and echo "mounted":

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

but others gave better ways to do that :)