Bedingter Crontab-Eintrag

Bedingter Crontab-Eintrag

Ich habe einen Crontab-Eintrag, der ein Skript ausführt und die Ausgabe in einer Datei, beispielsweise currenthash.log, als MD5-Hash speichert.

Ich kann jedoch eine Anforderung nicht erfüllen, bei der ich eine neue Datei erstellen muss, beispielsweise changedhash.log, wenn sich die MD5-Prüfsumme ändert. Kann ich das im Cronjob oder im Skript selbst tun?

Antwort1

cronhat keine Logik bezüglich der Ausführung der Aufgabe.

Es erzeugt einfach den Befehl in dem von Ihnen angegebenen Moment.

Um diese Art von Intelligenz zu erreichen, müssen Sie sie in Ihrem Skript implementieren.

Eine andere Möglichkeit, dies zu verwalten, könnte auch die Verwendung von logrotate(Rotieren von Protokolldateien unter bestimmten Bedingungen) oderincron( cron-ähnlicher Dienst, bei dem TriggerinotifyEreignisse statt Zeit).

Antwort2

Sie müssen den alten Hash irgendwo speichern und ihn dann mit dem neuen vergleichen. Etwas in dieser Richtung:

#!/bin/sh
file=/path/to/file
hashfile=/path/to/stored/hash
newhash=$(md5sum "$file")
oldhash=$(cat "$hashfile")
if [ "$newhash" != "$oldhash" ]; then
    echo it changed...
fi
echo "$newhash" > "$hashfile"

verwandte Informationen