[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/