ubuntuusers.de

Bash Erstellzeit einer Datei

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

michaelmeta

Anmeldungsdatum:
28. Oktober 2013

Beiträge: Zähle...

Hallo zusammen, ich habe in der SuFu leider nichts passendes gefunden ☹

Ich schreibe gerade ein Script, welches sich eine Datei aus einem Ordner schnappt. Dies geschieht per Endlosschleife. Allerdings möchte ich es so machen, dass das Programm, im Fall einer gefundenen Datei, die Erstellzeit ausliest und kontrolliert, ob sie älter ist als 60 sekunden. Im Fall soll das Script weiter machen. Im anderen Fall soll es noch etwas warten.

Ich bekomme jedoch die Erstellzeit nicht ausgegeben. Könnt Ihr mir vielleicht helfen?

Viele Grüße Michael

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13204

michaelmeta schrieb:

Hallo zusammen,

Herzlich willkommen hier im Forum!

Ich schreibe gerade ein Script, welches sich eine Datei aus einem Ordner schnappt. Dies geschieht per Endlosschleife.

Und was ist das Kriterium dafür, dass eine Datei "geschnappt" wird? Da können doch mehrere sein.

Allerdings möchte ich es so machen, dass das Programm, im Fall einer gefundenen Datei, die Erstellzeit ausliest und kontrolliert, ob sie älter ist als 60 sekunden. Im Fall soll das Script weiter machen. Im anderen Fall soll es noch etwas warten.

Wo ist der Unterschied zwischen "weiter machen" und "noch etwas warten"?

Ich bekomme jedoch die Erstellzeit nicht ausgegeben.

Dafür kann man stat nehmen:

1
2
3
4
$ stat -c '%w' .
2012-10-04 12:22:23.693885900 +0200
$ stat -c '%W' .
1349346143

Siehe auch die Manpage für mehr Ausgabeoptionen.

Falls Du das Verzeichnis als eine Art Queue benutzt, in die Arbeit in Form von Dateien geschmissen wird, die Du dann bearbeiten willst, wäre inotify vielleicht auch etwas für Dich.

Ciao

robert

D630

Avatar von D630

Anmeldungsdatum:
24. Juli 2013

Beiträge: 329

Ich hätte gedacht, dass das auch mit find geht, aber:

1
2
3
4

$ find . -newerBt "2013-01-01 00:00:00"
find: Dieses System stellt keine Funktion zum Ermitteln der Erzeugungszeit der Datei bereit.
find: Ungültige Option »-newerBt«

Schade.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Michael,

erstmal herzlich willkommen hier auf dem Forum !

Für solch einen Test würde ich auch find nehmen, das ist das einfachste. Allerdings würde ich die Änderungszeit abfragen:

while find timetest -not -mmin 1 -exec echo älter: {} \;
        do printf .
        sleep 5
done

Das führt den "-exec"- Teil aus, sobald die Änderungen an der Datei timetest älter als 1 Minute sind.

LG,

track

Antworten |