PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ordner nach neuen daten prüfen?



muell200
09-11-2005, 14:41
hallo

ich will einen ordner alle 5 min. nach neue dateien prüfen lassen.
die dateien sollen aber min. 1 min alt sein. ( letzter zugriff ), damit ich nicht dateien lösche die gerade kopiert werden.

folgender lösungsansatz funktioniert nicht:

find /ordner -mmin 5

gibt es eine möglichkeit/ befehl, wo ich prüfen kann
1-5 min nicht geändert

oder hat jemand einen andern tip
Danke

undefined
09-11-2005, 16:10
find . -type f -mtime 0 -amin 1 | xargs ls -l

muell200
10-11-2005, 08:42
find . -type f -mtime 0 -amin 1 | xargs ls -l

hallo

danke, aber leider geht es nicht.
z.b.: ich lege eine neue datei an.
dann führe ich den befehl aus -> datei wird erkannt
warte ich 5 min. -> datei wird nicht erkannt..

ich muss ich den cron-job jede min. starten?

wenn ich den befehl richtig verstehe, dann macht er folgendes:
finde alle reguläre dateien, die in der letzten stunde verändert wurden und der letze zugriff vor einer min. war?

stimmt doch, oder ?

Danke

phate
11-11-2005, 08:21
Nutze die Negierungsfunktion von find


find . -type f -mmin -5 ! -amin -1

Findet im aktuellen Verzeichnis alle Dateien, die innerhalb der letzten 5 Minuten geändert und nicht innerhalb der letzten Minute zugegriffen wurden.

undefined
12-11-2005, 09:12
@muell200
Er sucht nach allem von den letzten 24 Stunden veränderten und zeigt nur die von der Letzten Minute an. Den Rest wie von phate schon geschrieben einfach negieren.
z.B:

find .kde/share/config -maxdepth 1 -type f -mtime 0 ! -amin 1 | xargs ls -l

RapidMax
12-11-2005, 20:21
Frage am Rande: Wieso xargs ls -l verwenden wenn es für find den Parameter -ls gibt?

Gruss, Andy

Blackhawk
14-11-2005, 11:15
oder einfach -exec

xargs in verbindung mit find ist meist ueberfluessig...

RapidMax
16-11-2005, 17:24
Nun, um mit der Haarspalterei weiterzufahren:

Die -exec Option übergibt nur jeweils ein File als Parameter, während die Verwendung von xargs die maximale mögliche Anzahl an Parameter übergibt. Das wirkt sich zum Teil extrem in der Geschwindikeit aus: Vergleich dazu die Ausführungsgeschwindigkeit:


andy@andy ~/test $ date; find | wc -l
Mit Nov 16 18:20:24 CET 2005
13014
andy@andy ~/test $ date; time find -exec ls \{\} \; > /dev/null
Mit Nov 16 18:20:30 CET 2005

real 0m38.864s
user 0m19.232s
sys 0m19.530s
andy@andy ~/test $ date; time find -print0 | xargs -0 ls > /dev/null
Mit Nov 16 18:21:19 CET 2005

real 0m0.514s
user 0m0.377s
sys 0m0.138s
andy@andy ~/test $ date; time find -ls > /dev/null
Mit Nov 16 18:21:26 CET 2005

real 0m0.212s
user 0m0.100s
sys 0m0.110s


Gruss, Andy

Blackhawk
17-11-2005, 10:10
Wer braucht schon Performance? ;) Meine Scripte laufen eh nachts...

Joghurt
19-11-2005, 15:27
Naja, ein Beschleunigung um Faktor 60 durch eine kleine Änderung ist schon überlegenswert. Auch wenn die Skripte nachts laufen, wenn es viele Skripte werden, kommen sie sich irgendwann gegenseitig ins Gehege, wenn sie unnötig lange brauchen.