Zeitstempel einer Datei zurücklesen

Begonnen von mad24, 08 März 2017, 21:22:42

Vorheriges Thema - Nächstes Thema

mad24

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!

KernSani

Gerade nachgestellt... Bei mir geht's, sowohl in der Kommandozeile als auch in eine myUtils sub... Was bekommst du denn zurück?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

mad24

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

mad24

...bzw. die Zahl ändert sich schon, wenn ich die Datei neu abspeichere, bleibt dann aber konstant.

KernSani

Interessant, darauf habe ich nicht geachtet... Ist bei mir genauso, die Zahl ist zwar positiv, aber ändert sich nicht...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

mad24

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.

KernSani

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]);
}
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

mad24

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...