Was ist die beste Möglichkeit, einen Webserver (HTTP) kontinuierlich zu überwachen und neu hinzugefügte Dateien mit minimaler Verzögerung (idealerweise < 1 Minute Verzögerung) herunterzuladen?
Antwort1
Überwachung
Zunächst einmal empfehle ich Ihnen zur ÜberwachungNagios, der Kernquellcode ist kostenlos, wenn Sie jedoch eine GUI benötigen, müssen Sie dafür bezahlen, aber es ist den Preis wert.
Sie können auchVereisung,PRTG, oder was auch immer Ihnen besser passt.
Collectd (Collection Daemon) ist auch ein kostenloses Überwachungstool, das Sie herunterladen können, indem Sie es yum
auf RHEL-Derivaten oder apt-get
auf Debian-basierten verwenden. Sie können lesendieses Papierwenn Sie Collectd verwenden möchten.
Task wird alle x < 1 Minute ausgeführt
Zum zweiten Teil Ihrer Frage: Um einen Job alle x Mal auszuführen, wobei x in regelmäßigen Abständen weniger als eine Minute dauert, können Sie, wie Sie wissen, keine Cronjobs verwenden, da Sie einige Tricks verwenden können, die vonGilles in dieser Fragezu tun, was Sie wollen.
Es ist besser, ein Skript für das zu haben, was Sie brauchen, und es dauerhaft auszuführen, sogar beim Booten, wenn nötig. Sie können eine einfache Syntax wie unten gezeigt verwenden:
while true; do yourJob; sleep someTime; done
Oder Sie können je nach Bedarf sogar einige komplexere Skripte verwenden.
Sie können auch watch
den Befehl verwenden. Zum Beispiel:
watch -n1 command
Es wird Sie command
jede Sekunde und für immer verfolgen.
Wie Sie vielleicht schon vermutet haben, können Sie Ihr Shell-Skript auch mit ausführen, watch
wenn Sie nur ein einfaches Skript benötigen, das alle x Mal in weniger als einer Minute ausgeführt wird, und kein komplexes.
Es ist deine Entscheidung.
Antwort2
Dies hängt von mehreren Faktoren ab.
Wenn Sie die Kontrolle über den Webserver haben, wäre es am einfachsten, einen (RESTful?)-Dienst zu installieren, der die Anzahl der seit der letzten Überprüfung oder dem letzten Download geänderten Dateien angibt. Dies minimiert sowohl den Datentransfer als auch die Belastung von Client und Server. Noch besser ist es, wenn das Hochladen/Ändern von Dateien auf dem Server direkt verfolgt werden kann, z. B. im Upload-Skript, anstatt sich auf das Dateisystem zu verlassen.
Wenn Letzteres zutrifft, würde ich mir eine Dateiüberwachungslösung wie ansehen famd
.
Wenn Sie keine Kontrolle über den Server haben, müssen Sie Änderungen vornehmen, bevor Sie diese herunterladen können. Am einfachsten wäre es, einigeWebspiegelungDienstprogramme wie w3mir, da diese bereits die Überprüfung/Bereitstellung von ETag- und Last-Modified-/If-Modified-Since-Headern übernehmen. Das bedeutet, dass Sie weniger Aufrufe tätigen müssen und das Dienstprogramm daher häufiger ausführen können.
WasWieUm das Dienstprogramm auszuführen, hängt es davon ab, wo es ausgeführt wird. Sie können einen Cron-Job auf einem Unix-Computer verwenden oder es einfach in einer Schleife ausführen.
Wenn Sie sich für Ersteres entscheiden, sollten Sie jedoch eine Art Semaphor installieren, um zu verhindern, dass ein Spiegelungsprozess gestartet wird, bevor die vorherige Instanz beendet wurde. Das kann so einfach sein wie das Erstellen einer Sperrdatei:
if [ -r /tmp/mirror.lock ]; then
echo "lock file found" | logger -t webmirror
exit 0
fi
touch /tmp/mirror.lock
...whatever...
rm /tmp/mirror.lock
Sie müssen jedoch auch auf catch
jedes Signal achten, das Ihr Skript beenden könnte. Andernfalls könnte im Falle eines vorübergehenden Fehlers die Sperrdatei dort verbleiben und alle weiteren Instanzen daran hindern, ausgeführt zu werden, selbst nachdem der Fehler behoben wurde.
Oder Sie könnten überprüfen, ob die Sperrdatei älter als ein bestimmter Wert ist und sie ggf. löschen. Oder Sie könnten überprüfen, wie viele Instanzen des Skripts gefunden werden ps
(normalerweise eine, die aktuelle; wenn es mehr sind, sollte die aktuelle besser abgebrochen werden) und ganz auf die Sperrdatei verzichten.
Antwort3
Sie könnten einen einfachen curl
Befehl in einem Cron-Job ausführen, aber ich empfehle Ihnen, eine Überwachungslösung mit Webüberwachungsfunktionen zu verwenden. Davon gibt es viele kostenlos. Googeln Sie einfach nach „Open Source-Webüberwachungslösungen“ und Sie werden viele davon finden!
Antwort4
Wie FarazX sagte, gibt es mehrere Überwachungslösungen wie Nagios,Pandora FMS,... Aber vielleicht sind diese Werkzeuge zu groß für Ihren Zweck. VielleichtUptimerobotreicht dir.
Schauen Sie sich die Vorschläge an und wählen Sie das Beste für sich aus. Bedenken Sie jedoch, dass eine Überwachungslösung mit mehr Optionen Ihnen mehr Möglichkeiten für Ihre Umgebung bietet.