[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Alter einer Datei in Sekunden ermitteln


reflum,

On Fri, 2011-03-25 at 23:00 +0100, Raphael Eiselstein wrote:
> Hallo zusammen,
> 
> fuer eine Art watchdog-Funktion benoetige ich das Alter einer Datei in
> Sekunden. Im Normalbetrieb wird diese Datei zB alle 60sec getoucht. Ich
> will periodisch ermitteln, wenn diese Datei zB aelter als 80sec ist und
> eine Aktion ausloesen.
> 
> 
> Unter Linux habe ich dazu folgendes Konstrukt gebastelt:
> AGE=$(( $(date +%s) - $(date +%s --date "$(stat --format %y /var/run/filename )") ))"
> 
> wobei das aufgeschlueselt etwa folgendes ist:
> 
> NOW_SEC=$(date +%s)
> FILEDATE=$(stat --format %y /var/run/filename )
> FILEDATE_SEC=$(date +%s --date "${FILEDATE}"
> AGE=$(( ${NOW_SEC} - ${FILEDATE_SEC} ))
> test ${AGE} -gt 80 && do_alarm
> 
> Jetzt die Frage, ob es ein Tool gibt was direkt AGE erzeugt, also z.B.
> 
> $ fileage /var/run/filename
> 42
> 
> ... falls die Datei 42sec derzeit alt ist.
> 
> Gibts da schoenere Loesungen?

Abselut portabel:
$ perl -e 'print 24 * 3600 * -M "/tmp/bla", "\n"'
Oder eben:
$ perl -e 'print 24 * 3600 * -M $ARGV[0], "\n"' /tmp/bla


> Gruss
> Raphael
> 
> PS: Unter FreeBSD geht das mit stat so:
> 
> $ stat -f %Dm /tmp
> 1301090275
> (= Unix Timestamp am "Fr 25 Maer 2011 22:57:55 CET") 

GNU:
$ stat --format=%Y /tmp/bla
1301135487


-- 
Philipp.
 (Rah of PH2)

-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/