Uhrzeit von Datei

Hallo,

mit welchem Befehl kann ich überprüfen ob eine Datei schon älter ist als 1 Std. oder 2 Std.
Außerdem wie man nicht überprüft wann es erstellt wurde sondern die letzte Änderung vollzogen wurde.

Also 2 Version…
einmal ob es vor mehr als 2 oder 1 Std. erstellt worden ist und eines ob geändert worden ist.

mfg

PHP-Befehl: at2.php.net/manual/de/function.filectime.php

Sorry ich habe gemeint in Linux mit Shellscript.

mfg
christof

Sollte um touch herum zu basteln sein.

man touchhilft (hoffentlich) weiter…

Möglich wäre auch die Benutzung von rsync - eigentlich zu Backup-Zwecken gedacht, aber Dateiunterschiede (geändert / Zeit) lassen sich auch damit finden.

Meines Erachtens kann man den Unterschied zwischen neu
erstellt, aktualisiert oder mit touch manipuliert nicht herausfinden,
da gibt es nur eine Zeitangabe pro Datei, die mehr oder weniger
dekorativ ist, sofern nicht manipuliert auch gut brauchbar.
Sollte es doch anders sein, täte ich mich das auch interessieren -
ich habe auf Unix/Linux Dateien über mehr als 14 Jahre
entstanden sind, die immer mal wieder aktualisiert oder kopiert
wurden ;o)

touch ändert doch nur die Zeitinformation in nahezu beliebiger
Form.

Zeitlich sortiert Auflisten kann man jedenfalls schon mal mit
ls -lt

Mit -u gibt es offenbar noch die letzte Zugriffszeit.

Jedenfalls, wenn man auf das Ergebnis sowas wie grep losläßt,
müßte das geeignet filtern können, man kann mit grep
natürlich auch einfach die Ausgabe von ls -l filtern.

Könnte aber eleganter sein, find zu verwenden, das kann auch
direkt Zeitangaben verarbeiten …

Also ich blicke bei dem touch nicht ganz durch.

Wie müsste man das anwenden damit man überprüfen kann, ob eine Datei innnerhalb der letzten 2 Std. verändert wurde?
Wenn sie das letzte mal vor 5 Std. geändert wurde soll er einen Fehler ausgeben oder das Script zum Datei-verändern aufrufen.

mfg

Also…
ich habe da folgende Codezeile gefunden:

touch -t `date -d "1 day ago" +%m%d2200` /home/nagios/yesterday

Wie müsste ich diese Zeile jetzt umändern das er mir das ganze nicht von einem Tag sondern einer Std. macht?

Ich versteh nicht was das ‘1 day ago’ bewirkt und das 2200 hinter dem +%m%d
???

mfg

Das kannst du doch einfach ausprobieren:

touch doof
ls -l doof
touch -t date -d "1 day ago" +%m%d2200 doof
ls -l doof
touch -t date -d "1 day ago" +%m%d2018 doof
ls -l doof
touch -t date -d "2 months" +%m%d0418 doof
ls -l doof

Daraus kann man schließen, daß es sich einfach um die
Uhrzeit handelt, zwei Stellen für Stunden, zwei für Minuten …
touch manipuliert aber wie gesagt nur das Datum, nachprüfen
tut man damit nichts.

Aha…

hab nämlich ein Scriptstück von einem anderen Script und das überprüft angeblich die Zeit…

# Referenzfiles initialisieren für den spaeteren Datumsvergleich
touch -t `date -d "1 day ago" +%m%d2200` /home/nagios/yesterday
touch -t `date +%m%d0000` /home/nagios/today

# Datum des stop.log checken
if [ -n "`find $LOGFILE_PATH -name stop.log -newer /home/nagios/yesterday -print`" ] ; then
#    echo "OK - stopfile exists and is up to date"
     sleep 0
else
    echo "ERROR - stopfile missing or too old"
    exit $STATE_CRITICAL
fi;

# Datum des start.log checken
if [ -n "`find $LOGFILE_PATH -name start.log -newer /home/nagios/today -print`" ] ; then
#    echo "OK - startfile exists and is up to date"
     sleep 0
else
    echo "ERROR - startfile missing or too old"
    exit $STATE_CRITICAL
fi;

mfg

Das nutzt, wie bereits weiter oben vorgeschlagen, vor allem
find, um Dateien zu lokalisieren, die dem Zeitkriterium
entsprechen.

In dem Falle wird oben eben touch verwendet, um Dateien
mit einem bestimmten Datum anzulegen oder sie auf dieses
zu aktualisieren.

Die Überprüfung selbst findet unten mit find statt.
Wenn ich das richtig verstehe, guckt das eben, ob es Dateien
gibt, die neuer als die gerade mit touch manipulierten Dateien
sind. Ich meine, den Bereich mit touch kann man sich aber
auch gleich sparen, denn den Zeitabgleich kann man auch
direkt mit find durchführen (Dokumentation von find durchlesen).