Forum: PC-Programmierung Linux: Mounten automatisch kontrollieren


von Gerald (Gast)


Lesenswert?

Hallo,

mein RaspberryPi mountet bei jedem Start einen USB Stick. Dazu habe ich 
einen Eintrag in der fstab angelegt. Leider klappt das nicht jedes Mal, 
ich vermute es liegt am USB Stick (NoName billig China Produkt).

Wenn ich Dateien in den Mountpoint speichern lasse, liegen diese 
manchmal auf dem USB Stick und manchmal auf der SDKarte.

Ich suche deshalb nach einer automatischen Möglichkeit, zu 
kontrollieren, ob das Mounten erfolgreich war und wenn nicht es zu 
wiederholen solange bis es geklappt hat.

Manuell geht das ja über "df" bzw "df -h". Bevor ich mir jetzt was 
zusammenbastele, irgendwelche zeichenketten zu vergleichen, frage ich 
lieber mal: Geht das automatisch irgendwie eleganter?

Gruß und Dank,
Gerald

von Peter II (Gast)


Lesenswert?

Gerald schrieb:
> Geht das automatisch irgendwie eleganter?

einfach Mount aufrufen, dann sieht man doch was gemoutet ist.

von Gerald (Gast)


Lesenswert?

Peter II schrieb:
> Gerald schrieb:
>> Geht das automatisch irgendwie eleganter?
>
> einfach Mount aufrufen, dann sieht man doch was gemoutet ist.

Danke, sowas bekomme ich ja mit "df -h" auch. Es soll aber automatisch 
überprüft werden (ohne meine Abfrage), zB. mittels cronjob direkt nach 
dem start.

von Peter II (Gast)


Lesenswert?

du kannst dir mal

http://en.wikipedia.org/wiki/Automounter

anschauen, das müsste dafür sorgen das es immer gemountet wird wenn du 
es brauchst.

von Jan H. (jhnet)


Lesenswert?

1
grep -qs '/pfad/zum/mountpoint' /proc/mounts

Den Rückgabewert kannst du dann weiter im Skript verwenden.

Evtl geht auch:
1
mountpoint -q /pfad/zum/mountpoint

Siehe:
http://serverfault.com/questions/50585/whats-the-best-way-to-check-if-a-volume-is-mounted-in-a-bash-script

von Kaj (Gast)


Lesenswert?

Gerald schrieb:
> Wenn ich Dateien in den Mountpoint speichern lasse, liegen diese
> manchmal auf dem USB Stick und manchmal auf der SDKarte
Dann stimmt generell etwas nicht! Wenn du auf den Stick speichern 
willst, und der Stick nicht da ist, bekommst du eine Fehlermeldung. Was 
aber mit sicherheit nicht passieren wird, ist, dass das OS die Daten 
irgendwo anders (in diesem Falle die SD-Karte) hinschreibt! Da stimmt 
was mit deinem Mountpoints nicht!

von Peter II (Gast)


Lesenswert?

Kaj schrieb:
> Dann stimmt generell etwas nicht!

das ist Linux. wenn ein Device nicht gemountet ist, dann werden die 
Daten einfach in den mountpoint, der ja vorhanden ist, geschrieben.

Das ist es ganz normales verhalten.

von Rolf Magnus (Gast)


Lesenswert?

Kaj schrieb:
> Dann stimmt generell etwas nicht! Wenn du auf den Stick speichern
> willst, und der Stick nicht da ist, bekommst du eine Fehlermeldung. Was
> aber mit sicherheit nicht passieren wird, ist, dass das OS die Daten
> irgendwo anders (in diesem Falle die SD-Karte) hinschreibt!

Warum nicht? Wen da nichts gemountet ist, existiert das Verzeichnis, das 
eigentlich der Mountpoint sein sollte, ja trotzdem. Und wenn man dort 
Schreibrechte hat, kann natürlich dorthin geschrieben werden.

von Gerald (Gast)


Lesenswert?

Danke schonmal für die Tipps, ich gehe sie gerade durch.

Kaj schrieb:
> Gerald schrieb:
>> Wenn ich Dateien in den Mountpoint speichern lasse, liegen diese
>> manchmal auf dem USB Stick und manchmal auf der SDKarte
> Dann stimmt generell etwas nicht! Wenn du auf den Stick speichern
> willst, und der Stick nicht da ist, bekommst du eine Fehlermeldung. Was
> aber mit sicherheit nicht passieren wird, ist, dass das OS die Daten
> irgendwo anders (in diesem Falle die SD-Karte) hinschreibt! Da stimmt
> was mit deinem Mountpoints nicht!


Ich habe einen Ordner /home/gerald/USBStick erzeugt und diesen als 
Mountpoint angegeben. Wenn der USBStick eingebunden ist, stellt dieser 
Ordner den USBStick dar.
Wenn nicht, liegen die Daten in /home/gerald/USBStick.

Was ist daran falsch?

von Gerald (Gast)


Lesenswert?

da waren zwei schneller :-)

von lisefba (Gast)


Lesenswert?

Gerald schrieb:
> Ich habe einen Ordner /home/gerald/USBStick erzeugt und diesen als
> Mountpoint angegeben. Wenn der USBStick eingebunden ist, stellt dieser
> Ordner den USBStick dar.
> Wenn nicht, liegen die Daten in /home/gerald/USBStick.
>
> Was ist daran falsch?

Kann es folgendes sein: ?

Deine Daten liegen in dem Ordner /home/gerald/USBStick
Wenn dein USBStick gemountest ist liegen dessen daten in 
/home/gerald/USBStick/'NAME DES USB STICKS'

Du schreibs also die Daten in den Ordner USBStick, und in sem selben 
Ordner wird der USBStick gemounted. Das sind dann immer noch ein Ordner 
und ein USBStick, aber kopiert wird dabei von alleien nichts 
automatisch.

von Achim H. (anymouse)


Lesenswert?

lisefba schrieb:
> Deine Daten liegen in dem Ordner /home/gerald/USBStick
> Wenn dein USBStick gemountest ist liegen dessen daten in
> /home/gerald/USBStick/'NAME DES USB STICKS'

Nee, "USBStick" dürfte schon der Name des Sticks sein.

Das klingt alles schon richtig so, der TO hat ein technisches Problem.

--

@TO:

Mal ne andere Frage: Kannst Du nicht im Mountpoint-Dir ein Verzeichnis 
(oder eine Datei) anlegen? Diese wird normalerweise vom USB-Stick 
verdeckt, könnte aber abgefragt werden?

Ansonsten müsste man mal /proc/mounts untersuchen.

: Bearbeitet durch User
von imon (Gast)


Lesenswert?

Wie wäre es nicht direkt in das root Verzeichnis des USB Sticks zu 
schreiben sondern in eine Unterordner also statt /mnt/USBstick so was 
wie /mnt/USBstick/data, Das hätte den Vorteil, wenn der USB Stick nicht 
gemountet gibt es das Verzeichnis data nicht und der Schreibe Prozess 
bekommt einen Fehler.

Die Fehler Behandlung könnte das Mounten es Stick sein. Das Verzeichnis 
data müsstest du dann halt einmal zu beginn auf den USBstick angelegt 
haben.

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Der Schreibprozess bzw. die fopen-Funktion gibt doch auch einen Fehler 
wenn der Stick nicht gemountet ist und du direkt ins root von dem Stick 
schreiben willst... also "/mnt/USBstick/bla.txt"

von ./. (Gast)


Lesenswert?

Ich setze die Permissions meiner Mountpoint einfach auf '000'.

Wenn ein Medium gemounted wird, aendern sich die Permissions
auf die auf dem Medium gesetzten Wert.

Damit kann zumindest jeder User > 0 nichts in nicht gemountete Ordner 
schreiben.

von imon (Gast)


Lesenswert?

Rene Schube schrieb:
> Der Schreibprozess bzw. die fopen-Funktion gibt doch auch einen Fehler
> wenn der Stick nicht gemountet ist und du direkt ins root von dem Stick
> schreiben willst... also "/mnt/USBstick/bla.txt"

Warum sollte er das tun? Wenn mein User auf /mnt/USBstick/ schreiben 
darf und der mountpoint /mnt/USBstick ist, wird fopen dort eine Datei 
erstellen, welche im worst case verhindert das mounten danach noch geht 
( Stichwort Mountpoint not empty).

von Gahfe (Gast)


Lesenswert?

Was steht im log warum der Mount nicht geht?

von Uwe B. (boerge) Benutzerseite


Lesenswert?

Achim Hensel schrieb:
> Mal ne andere Frage: Kannst Du nicht im Mountpoint-Dir ein Verzeichnis
> (oder eine Datei) anlegen? Diese wird normalerweise vom USB-Stick
> verdeckt, könnte aber abgefragt werden?
>
...dies bzw. die Umkehrung, eine "feste" Datei auf dem einzubindenden 
USB-Stick abfragen, ist die gängige Lösung für solche Geschichten.

Warum der Stick ab und zu nicht automatisch gemounted wird ist die eine 
Frage, die man klären könnte, aber nie entgültig lösen wird, da zuviele 
Einflussfaktoren die Ursache sein können.

Und man sollte vielleicht auch noch zwei andere Szenarien beachten und 
mit obiger Lösung prüfen:
* falscher Stick...
* Stick im laufenden Betrieb einfach abgezogen...

Grüße Uwe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.