Ich habe ein tmpfs-Dateisystem in einem bestimmten Verzeichnis gemountet. Ich möchte ein Shell-Skript schreiben, um zu überprüfen, ob das tmpfs-Dateisystem bereits im Verzeichnis eingebunden ist.Shell-Skript, um zu wissen, ob ein Dateisystem bereits gemountet ist
Antwort
Sie können den Typ des Dateisystems überprüfen.
Sie können auch überprüfen, ob ein Verzeichnis ein Mountpoint ist, indem Sie das Gerät mit dessen Eltern vergleichen.
$ stat -c '%D'/ 901 $ stat -c '%D' /home fe01 $ stat -c '%D' /home/$USER fe01
Sie könnten df
verwenden, versuchen Sie man df
.
df 'directory' | awk '{print $1, $6}'
geben Ihnen gerne STH:
Filesystem Mounted
/dev/sda5 'some_dir'
Sie dann einen Scheck hinzufügen können, wenn das Verzeichnis ‚some_dir‘ ist gleich wie ‚your_dir‘ und Dateisystem ist wie bei Ihnen gleich.
So etwas wie dies, während hackish, sollte es tun:
FS_TO_CHECK="/dev" # For example... change this to suit your needs.
if cat /proc/mounts | grep -F " $FS_TO_CHECK " > /dev/null; then
# Filesystem is mounted
else
# Filesystem is not mounted
fi
prüfen/proc/mounts. Wenn Sie den Namen des Dateisystems und den gewünschten Pfad angeben (möglicherweise sogar eine bestimmte Zeile mit allen Optionen), können Sie feststellen, ob das Dateisystem angehängt ist.
if [ "`grep "tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0" /proc/mounts`" != "" ]
then
echo Mounted.
else
echo Not mounted.
fi
Eine virtuelle -1 für die Verwendung von Backticks an einem nicht-trivialen Ort. – Sorpigal
'if grep ...' - keine Notwendigkeit für Klammern auch nicht. –
Es ist ein Tool, das speziell für diese: einhängepunkt (1)
if mountpoint -q "$directory" ; then
echo it is a mounted mountpoint
else
echo it is not a mounted mountpoint
fi
Und Sie haben nicht einmal Saiten zu kratzen, es zu tun!
Beachten Sie, dass ich dieses Tool in Debians initscripts Paket finde. Wie verfügbar es anderswo ist, kann ich nicht kommentieren.
Ich sehe, dass Mountpoint ist Teil des Gentoo Linux sys-apps/util-linux-Paket zusammen mit mehr, mount, umount, dmesg und eine Reihe anderer System-Tools. Ich würde sagen, das ist die sauberste Lösung. – cvolny
@cvolny: Es stellt sich heraus, dass 'mountpoint' ein Teil von util-linux ist (speziell der sys-utils-Teil) und wahrscheinlich in den meisten Linux-Distributionen auf die eine oder andere Weise verfügbar ist. Es ist jedoch nicht Teil von GNU und nicht wahrscheinlich auf Nicht-Linux-Systemen verfügbar. – Sorpigal
Sieht so aus, als ob es mit RHEL 7.1 geliefert wird (err. Ok, ich habe hier ein paar Sachen installiert).Also kann ich mir da nicht sicher sein) –
if mount -l -t tmpfs | grep "on $directory "
then
echo "it's mounted"
fi
Ich weiß, dass dieser Thread alt ist, aber warum nicht einfach df und grep für den erforderlichen Pfad zum Mountpoint verwenden? d. h. wie folgt:
df /full/path | grep -q /full/path
grep gibt true zurück, wenn aktiviert, false, wenn nicht. Also müssen wir es einfach so testen:
df /mnt/myUSBdisk | grep -q /mnt/myUSBdisk && echo "Mounted" || echo "Not mounted"
Kinderleicht ...
Ich habe mich entschieden dieses zu bewerten, denn obwohl mountpoint einfacher für die gestellte Frage ist, ist diese Antwort flexibler. Zum Beispiel mounten einige Linux-Distributionen Shared-Speicher-tmpfs unter/tmp, während andere/dev/shm oder beides verwenden. Diese Antwort macht es leicht zu erkennen, ob/tmp Shared Memory ist oder nicht: 'df/tmp | grep -q tmpfs && echo "Gemeinsamer Speicher" || echo "Nicht geteilter Speicher" Oder, mehr zu dem Punkt "df/tmp | grep -q tmpfs && tmp =/tmp || tmp =/dev/shm" –
einhängepunkt ist viel eleganter und ist in sysvinit-Tools CentOS 6 +++
Wohl wahr ... – cdhowie