Festplattenzugriffe protokollieren

Allo

Lt. Commander
Registriert
Feb. 2004
Beiträge
1.064
Ich suche schon seit Tagen ein Programm welches alles protokolliert was auf die Festplatte zugreift – dabei soll es lese-,schreib-zugriffe erfassen. „fileschanged“ listet leider nur Dateiänderungen auf.
Unter Windows gibt es solch ein Programm, da heißt es Filemon, doch unter Linux ?
 
Ich glaube, du suchst "lsof". Eventuell in Kombination mit "grep".
Also lsof |grep <Programm>
oder lsof |grep <datei>
Auszuführen natürlich als root.

Edit: Möchstest du einfach alles anzeigen, dürfte sich "lsof |less" anbieten, da die Liste doch recht lang ist.
 
das zeigt jedoch die dateien an, welche schon geöffnet sind. Ich muss aber wissen auf welche datei JETZT zugegriffen wird.
Der hintergrund ist nämlich folgender:
Ich habe bei meinem 2.PC die Festplatte so eingestellt, dass sie nach einer minute ausgeschaltet wird. leider fährt die festplatte alle ~7-10min wieder hoch, weil offensichtlich etwas geschrieben oder gelesen wird. nur ich weiß nicht welche datei von welchem programm in GENAU DEM MOMENT benutzt wird.
 
"ps aux" (ebenfalls als root) + die /etc/crontab anschauen (manchmal sinds auch Verzeichnisse wie /etc/cron.hourly).

Davon abgesehen tippe ich auf eines von zwei Dingen:
a) updatedb, das die Datenbank für "locate" aktualisiert
b) eine Art "Defragmentierung", die nach n Minuten anfängt mit rattern.

Bau dir doch einfach ein Script. Sowas in der Art sollte eigentlich funktionieren:

| #!/bin/bash
| while true
| do lsof |grep /mnt/festplatte >> filesystem_log
| lsof |grep /dev/hdb >> direktzugriff_log
| done

Hoffentlich frissts nicht zu viel CPU. Ansonsten mal ein "sleep 1" oder "sleep 2" zwischen die lsof-Aufrufe einfügen.
Und natürlich aufpassen, dass beim Scriptstart nichts auf die Festplatte zugreift. Sonst sind die entsprechenden Log-Files ziemlich schnell ziemlich groß :)

Schonwieder ein Edit:
Anmerkung: Nur vorsichtshalber: Abbrechen kannst du das Script mit strg+c oder von einer anderen Konsole aus (auch als root) per "killall bash" (<<--Achtung: Holzhammer!)
 
Zuletzt bearbeitet:
Setz den Kernel-Debug hoch, um zu sehen, welcher Syscall von welchem Prozess kommt. Weiterhin kannst du dich mal ueber 'Suspend' informieren, da duerfte eigentlich kein Prozess die Platte aus dem Schlaf holen.
 
Zuletzt bearbeitet:
Zurück
Oben