FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mad24 am 08 März 2017, 21:22:42

Titel: Zeitstempel einer Datei zurücklesen
Beitrag von: mad24 am 08 März 2017, 21:22:42
Hallo,
ich möchte den Zeitstempel einer Datei in Sekunden zurücklesen, seit diese sich geändert hat.
Normalerweise funktioniert das einwandfrei mit...

my $alter = (-M "/var/fhem/xyz.txt" ) * 86400 ;                 # Zeit in Sekunden
if ($alter < 12)
    {
      ...
    }

...leider klappt das nicht, wenn ich es unter 99_myUtils.pm laufen lasse.
Hat jemand einen Tip für mich?

Danke!
Titel: Antw:Zeitstempel einer Datei zurücklesen
Beitrag von: KernSani am 08 März 2017, 21:47:52
Gerade nachgestellt... Bei mir geht's, sowohl in der Kommandozeile als auch in eine myUtils sub... Was bekommst du denn zurück?
Titel: Antw:Zeitstempel einer Datei zurücklesen
Beitrag von: mad24 am 08 März 2017, 22:05:12
Bei mir kommt eine negative Zahl zürück '-437276' und diese ändert sich auch nicht.
Starte ich das Ganze als Skript in der Shell krieg ich den richtigen Zeitstempel seit der letzten Änderung - z.B. 3517
Titel: Antw:Zeitstempel einer Datei zurücklesen
Beitrag von: mad24 am 08 März 2017, 22:06:46
...bzw. die Zahl ändert sich schon, wenn ich die Datei neu abspeichere, bleibt dann aber konstant.
Titel: Antw:Zeitstempel einer Datei zurücklesen
Beitrag von: KernSani am 08 März 2017, 22:25:08
Interessant, darauf habe ich nicht geachtet... Ist bei mir genauso, die Zahl ist zwar positiv, aber ändert sich nicht...
Titel: Antw:Zeitstempel einer Datei zurücklesen
Beitrag von: mad24 am 08 März 2017, 23:01:33
Zum Hintergrund:
Ich lasse 2 RaspberryPi über ein File miteinander kommunizieren, bzw. mein Fhem Server nutzt die Daten des 2. Pi.
Das File frage ich alle paar Sekunden ab und möchte es nur öffnen, wenn es Änderungen gibt - auch wenn es sich um ein RAM-Drive handelt.
Titel: Antw:Zeitstempel einer Datei zurücklesen
Beitrag von: KernSani am 08 März 2017, 23:16:35
Keine Ahnung, warum das innerhalb von Perl nicht funktioniert, aber sowas funktioniert :-)


sub alter() {
   my @info =  stat("/opt/fhem/fhem.cfg");
   return (time() - $info[9]);
}
Titel: Antw:Zeitstempel einer Datei zurücklesen
Beitrag von: mad24 am 09 März 2017, 16:59:38
Das mit stat hatte ich gestern auch schon probiert - $info[9] liefert bei mir aber keinen Wert.
Bei mir kommt mit der Funktion nur der Wert von time() zurück.
Es macht also keinen Unterschied, ob ich

return (time() - $info[9]);
oder
return (time());

mache.

Trotzdem, vielen Dank für Deine Ideen und Untersuchungen!
Ich steh echt grad auf dem Schlauch und frag mich warum das in der Fhem-Umgebung nicht geht...