Ich bin neu im Scripting ... Ich kann sehr einfache Sachen machen, aber jetzt brauche ich eine Hand.
Ich habe ein lokales Dateisystem, das nur bereitgestellt wird, wenn ich eine Sicherung durchführen muss.
Ich fange damit an.
#!/bin/bash
export MOUNT=/myfilesystem
if grep -qs $MOUNT /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."; then
mount $MOUNT;
fi
Wie gesagt, ich bin sehr einfach im Scripting. Ich habe gehört, dass Sie den Status des mount
Befehls anhand der Rückkehrcodes überprüfen können .
RETURN CODES
mount has the following return codes (the bits can be ORed):
0 success
1 incorrect invocation or permissions
2 system error (out of memory, cannot fork, no more loop devices)
4 internal mount bug
8 user interrupt
16 problems writing or locking /etc/mtab
32 mount failure
64 some mount succeeded
Ich weiß nicht, wie ich das überprüfen soll. Irgendeine Anleitung?
bash
shell-script
mount
maniat1k
quelle
quelle
; then
in Ihrem Skript.Antworten:
Sie können den Statuscode
mount
und die am besten geschriebenen ausführbaren Dateien mit dem speziellen Shell-Parameter überprüfen?
.Von
man bash
:? Expands to the exit status of the most recently executed foreground pipeline.
Nachdem Sie den
mount
Befehl ausgeführt haben, wird bei sofortiger Ausführungecho $?
der Statuscode des vorherigen Befehls gedruckt.Nicht alle ausführbaren Dateien haben genau definierte Statuscodes. Es sollte mindestens mit einem Erfolgscode (0) oder einem Fehlercode (1) beendet werden, aber das ist nicht immer der Fall.
Um Ihr Beispielskript zu erweitern (und zu korrigieren), habe ich der
if
Übersichtlichkeit halber ein verschachteltes Konstrukt hinzugefügt . Es ist nicht die einzige Möglichkeit, den Statuscode zu testen und eine Aktion auszuführen, aber es ist am einfachsten zu lesen, wenn Sie lernen.Weitere Informationen zu "Exit and Exit Status" finden Sie im Advanced Bash-Scripting Guide .
quelle
$MOUNT
. Dieses Skript bricht auch ab, wenn das Dateisystem Zeichen enthält, die durch Wortteilung getrennt werden (Leerzeichen usw.). Sie sollten immer Ihre Erweiterungen angeben.Viele Linux-Distributionen haben den
mountpoint
Befehl. Es kann explizit verwendet werden, um zu überprüfen, ob ein Verzeichnis ein Mountpunkt ist. So einfach ist das:quelle
Ein weiterer Weg:
quelle
findmnt
der Parameter angegeben werden muss--source encfs
, andernfalls wird das anzuhängende Verzeichnis immer berücksichtigt, da es auf den übergeordneten Mount zurückgreift.Der einfachste Weg ohne root ist:
oder um zu sehen, ob es nicht gemountet ist:
quelle
mount
Befehl benötigt keinen Root-Zugriff,df
konzentriert sich auf den Speicherplatz und nicht auf Mount-Punkte.Kurze Aussagen
Überprüfen Sie, ob montiert :
Prüfen ob nicht montiert :
quelle
Ich habe es mit untenstehendem Skript versucht
Die einzige Eingabe, die Sie machen müssen, ist der Name des Dateisystems
quelle