(u)mounts mitbekommen

12/08/2015 - 10:41 von Christoph Mehdorn Weber | Report spam
Hallo!

Ich habe folgende Situation: Ich betreibe einen Raspberry Pi
headless, um gelegentlich USB-Sticks zu betanken, ohne, daß mein
Hauptrechner die ganze Zeit laufen müßte.

Am Raspberry làuft entsprechend der Automounter, der die Sticks
nach Bedarf einbindet, und wenn nach dem letzten Schreibvorgang
das Timeout durch ist, erfolgt der Umount.

Im Allgemeinen paßt das ganz gut, weil ich irgendwas schreibe
und die Sticks erst nach Stunden wieder ernte, wo sie làngst nicht
mehr benutzt werden. Manchmal hat man es jedoch eilig ...

Daher wollte ich an einem freien GPIO eine LED anbringen, die
mir anzeigen soll, ob noch mindestens ein Stick eingebunden ist.
Das Anbringen und Ein- und Ausschalten an sich ist kein Thema,
aber wie ermittle ich elegant den Mount-Status?

1. Idee: Änderungen an mtab ermitteln

Man guckt per inotify auf /etc/mtab und wenn sich da etwas
àndert, macht man ein "grep" und weiß, ob noch Sticks da sind.
Leider gibt es /etc/mtab nicht mehr so richtig, daher braucht man
/proc/mounts, und dort hat das Dateidatum nichts mit dem letzten
Schreibvorgang zu tun, sondern ist immer aktuell. Geht also eher
nicht.


2. Idee: Änderungen am Automounter-Verzeichnis überwachen

Man guckt stattdessen per inotify ins Verzeichnis, wo man den
Kram hinmountet, bei mir /media. Allerdings ist da viel los,
solange gemounet ist (vermutlich ist es der Automounter, der dort
regelmàßig guckt), und explite Mount-Events gibt es nicht. Einen
solchen Block bekomme ich derzeit pro Sekunde:

| $ inotifywait -m /media/
| Setting up watches.
| Watches established.
| /media/ OPEN,ISDIR
| /media/ CLOSE_NOWRITE,CLOSE,ISDIR
| /media/ OPEN,ISDIR usb
| /media/ CLOSE_NOWRITE,CLOSE,ISDIR usb
| /media/ OPEN,ISDIR holzklotz
| /media/ CLOSE_NOWRITE,CLOSE,ISDIR holzklotz
| /media/ OPEN,ISDIR datenkabel
| /media/ CLOSE_NOWRITE,CLOSE,ISDIR datenkabel

Da könnte man auch /proc/mounts pollen und hàtte auch nicht mehr
Aufwand. Will ich aber eigentlich nicht, weil ich gleich reagieren
können möchte.

Gut, man könnte ohne "-m" arbeiten, damit es nach dem ersten
Event aussteigt, dann die Mounts untersuchen, die LED entsprechend
schalten und einige Sekunden warten, bevor man wieder fragt. Aber
mit etwas Pech verpaßt man dann die Events, wo der umount wirklich
passiert ist, und danach ist Ruhe im Verzeichnis. Auch blöd ...


3. Idee: Polling

Wie schon erwàhnt, könnte man regelmàßig /proc/mounts lesen und
gucken, ob sich etwas geàndert hat. Sei es eine Prüfsumme oder --
sehr groß wird die Datei nicht -- holt man sie komplett in den
Speicher, ist dabei relativ egal. Aber da bekommt man natürlich
auch immer eine Verzögerung rein. Zu oft pollen will man nicht, da
das nicht die Hauptaufgabe vom Raspberry werden soll, zu selten,
und ich warte lànger.


Hat jemand eine bessere Idee für mich?

Christoph

Wie sagen die OjE-Fans? OjE _kann_ durchaus vernuenftige Postings
absetzen. Die Wetten-Dass-Fans sagen auch, dass man mit einem
Bagger Marmelade in Einmachglaesser fuellen kann...
(Tim Lammarsch)
 

Lesen sie die antworten

#1 Juergen Schroeder
12/08/2015 - 15:52 | Warnen spam
Christoph 'Mehdorn' Weber wrote:

Am Raspberry làuft entsprechend der Automounter, der die Sticks
nach Bedarf einbindet, und wenn nach dem letzten Schreibvorgang
das Timeout durch ist, erfolgt der Umount.

Daher wollte ich an einem freien GPIO eine LED anbringen, die
mir anzeigen soll, ob noch mindestens ein Stick eingebunden ist.
Das Anbringen und Ein- und Ausschalten an sich ist kein Thema,
aber wie ermittle ich elegant den Mount-Status?

Hat jemand eine bessere Idee für mich?



Die Start-Optionen für den Automounter so einstellen, das er mehr loggt.

man automount
-v, --verbose
Enables logging of general status and progress messages for
all autofs managed mounts.
-d, --debug
Enables logging of general status and progress messages as
well as debugging messages for all autofs managed
mounts.
-l, --set-log-priority priority path [path,...]
Set the daemon log priority to the specified value. ...


dann sollte im Syslog mounts und umounts auftauchen. Dieses File dann
überwachen. (in /etc/default/autofs)

Für dein Kopierscript
setleds +num
cp datei ziel
sync
setleds -num

benutzt anstatt GPIO einfach eine Tastatur.

Nach dem sync müsste bei USB das Abstöpseln gehen. (Ob der automounter dann
aus dem Tritt kommt?)

Jürgen

Ähnliche fragen