Geschriebene Daten im Dateisystem ermitteln

  • 4 Antworten
  • Letztes Antwortdatum
Maniaxx

Maniaxx

Stamm-User
38
Hallo,
wie kann ich geschriebene Daten (Name, Menge) im Dateisystem ermitteln? Mit 'find' bekomme ich die Dateinamen (eines bestimmten Zeitraums), nicht aber wie viel die einzelnen Dateien geschrieben haben.

Im Prinzip möchte ich ein Customimage auf "Badguys" untersuchen, die verhältnismäßig viele Schreibzugriffe verursachen.
 
Das würde bedingen, dass jeder Schreibzugriff protokolliert werden müsste. Das ist weder vom Zeitaufwand noch vom Speicherplatzbedarf her realistisch für ein Mobilbetriebssystem. Du kannst also nur über den Zeitstempel ermitteln, dass geschrieben wurde, mehr aber nicht.
 
Das verbraucht doch keinen Speicher, eher Ressourcen von CPU und Dateisystem. Da wird kurz in einer Datenbank bei dem Dateinamen +1 gesetzt und die Bytes addiert und das war's (pro Schreibzugriff). Der Aufwand ist doch sehr gering. Außerdem ist es ja auch nicht für den Dauereinsatz gedacht, sondern nur um mal ein paar Stunden mit zu loggen.

Auf meinem Linuxrouter logge ich die Dateien so:
find / -mmin -240 | grep -v '/dev' | grep -v '/proc' | grep -v '/var/log/rrd' | grep -v '/var/lock' | grep -v '/var/run' | grep -v '/sys'
(die angegebenen Ordner werden ausgeschlossen, 240min entspricht einer Auflistung der letzten 4 Stunden).

Problematisch dabei (da nicht erfassbar) sind Dateien, die oft wiederholt geschrieben werden. Syslogd/Klogd bzw. var/log/messages ist zwar recht klein (<2MB), verursacht aber bei mir ca. 30-70MB pro Tag Schreibzugriffe (wobei dieser Wert im Webfrontend des IPFire geliefert wird. Wie die den erfassen, habe ich noch nicht recherchiert).. Seit ich das in die Ramdisk verschoben habe, habe ich nur noch 1-2MB Schreibzugriffe pro Tag. Der Router läuft natürlich auch auf CompactFlash, sonst würde das ja keinen Sinn machen.

Vielleicht reicht das ja auch... Ich teste das erst mal mit dem Androiden.
 
Zuletzt bearbeitet:
Ich sehe nicht, dass Dein langes find-Kommando dasselbe täte. Es listet einfach die Dateien auf, die sich in den letzten 240 min geändert haben und die sich nicht in bestimmten Verzeichnissen befinden. (Es fehlt übrigens das ^ vor den Dateinamen, damit sie auch im Wurzelverzeichnis verankert sind. So trifft es auch Subdirectories.)

Davon abgesehen, würde ich nicht tausend grep-Prozesse hintereinanderschalten und Ressourcen verbraten. Useless Use of Grep würde ich das nennen, wozu gibt es reguläre Ausdrücke? Ein Zusammenschalten der Verzeichnisse mit „\|” bei grep und „|” bei egrep (oder grep -e) tut's genauso und alles lässt sich mit einem (Zahl 1) grep erledigen. Aber – wie gesagt – ich sehe nicht, dass Dein find + grep irgendwie die geschriebene Menge der letzten 240 Minuten angeben würde. Und um die geht es Dir doch laut Eröffnungsposting.
 
Zuletzt bearbeitet:
mizch schrieb:
Ich sehe nicht, dass Dein langes find-Kommando dasselbe täte.
Das wollte ich damit auch nicht sagen. Da es aber scheinbar das Einzige ist, was dahingehend hilfreich ist, bleibt mir ja nichts anderes übrig.
 

Ähnliche Themen

nennse
Antworten
20
Aufrufe
288
Skyhigh
Skyhigh
T
Antworten
10
Aufrufe
479
Klaus986
K
K
Antworten
1
Aufrufe
378
BB1
B
Zurück
Oben Unten