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
Sorry ich habe gemeint in Linux mit Shellscript.
mfg
christof
Sollte um touch herum zu basteln sein.
man touch
hilft (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).