[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Alter einer Datei in Sekunden ermitteln
[Thread Prev] | [Thread Next]
- Subject: Re: Alter einer Datei in Sekunden ermitteln
- From: Philipp Schafft <lion@xxxxxxxxx>
- Date: Sat, 26 Mar 2011 11:35:33 +0100
- To: uugrn@xxxxxxxxxxxxxxx
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/