Angenommen, Sie wollen in einem Shell-Skript testen, ob /mnt/disk ein Einhängepunkt ist. Wie machen Sie das?
Antworten
Zu viele Anzeigen?Leider haben sowohl mountpoint als auch stat den Nebeneffekt, dass MONTAGE das Verzeichnis, das Sie testen, wenn Sie automount verwenden. Zumindest ist das bei mir unter Debian der Fall, wenn ich auto cifs auf eine WD MyBookLive Netzwerkplatte verwende. Ich endete mit einer Variante der /proc/mounts, die komplexer ist, weil jedes POTENTIAL mount ist bereits in /proc/mounts, auch wenn es nicht wirklich gemountet ist!
cut -d ' ' -f 1 < /proc/mounts | grep -q '^//disk/Public$' && umount /tmp/cifs/disk/Public
Where
'disk' is the name of the server (networked disk) in /etc/hosts.
'//disk/Public' is the cifs share name
'/tmp/cifs' is where my automounts go (I have /tmp as RAM disk and / is read-only)
'/tmp/cifs/disk' is a normal directory created when the server (called 'disk') is live.
'/tmp/cifs/disk/Public' is the mount point for my 'Public' share.
Hier ist eine Variante mit "df -P", die portabel sein soll:
mat@owiowi:/tmp$ f(){ df -P | awk '{ if($6 == "'$1'")print }' ; }
mat@owiowi:/tmp$ f /
/dev/mapper/lvm0-vol1 20642428 17141492 2452360 88% /
mat@owiowi:/tmp$ f /mnt
mat@owiowi:/tmp$ f /mnt/media
/dev/mapper/lvm0-media 41954040 34509868 7444172 83% /mnt/media
stat --printf '%m' zeigt den Einhängepunkt einer bestimmten Datei oder eines Verzeichnisses an.
realpath wandelt relative Pfade in direkte Pfade um.
Der Vergleich der beiden Ergebnisse zeigt Ihnen, ob ein Verzeichnis ein Einhängepunkt ist. stat ist sehr tragbar. realpath ist weniger wichtig, wird aber nur benötigt, wenn Sie relative Pfade prüfen wollen.
Ich bin nicht sicher, wie tragbar mountpoint ist.
if [ "$(stat --printf '%m' "${DIR}")" = "$(realpath "${DIR}")" ]; then
echo "This directory is a mount point."
else
echo "This is not a mount point."
fi
Ohne realpath :
if [ "${DIR}" = "$(stat --printf '%m' "${DIR}")" ]; then
echo "This directory is a mount point."
else
echo "This is not a mount point."
fi
- See previous answers
- Weitere Antworten anzeigen