Problem: Cron-Jobs häufiger als einmal pro Minute ausführen
Cron-Jobs in Linux laufen normalerweise in Intervallen von einer Minute oder länger. Manchmal müssen Sie Aufgaben jedoch häufiger ausführen, zum Beispiel alle 10 Sekunden. Das kann ein Problem für Aufgaben sein, die fast sofort ausgeführt werden müssen.
Verwendung mehrerer Cron-Einträge mit Sleep-Befehlen
Einrichten der Cron-Jobs
Um eine Aufgabe alle 10 Sekunden unter Linux auszuführen, können Sie mehrere Cron-Einträge mit Sleep-Befehlen verwenden. Diese Methode nutzt sechs Cron-Einträge, die jede Minute ausgeführt werden, jeweils mit einer unterschiedlichen Verzögerungsdauer. Durch die Verteilung der Ausführungszeiten erreichen Sie ein 10-Sekunden-Intervall zwischen jeder Aufgabenausführung.
Der Prozess umfasst:
- Erstellung von sechs Cron-Einträgen, die jede Minute ausgeführt werden
- Hinzufügen von Sleep-Befehlen zu jedem Eintrag, um die Ausführungszeit zu versetzen
- Verwendung desselben Befehls für jeden Eintrag
Hier ein Beispiel für diese Cron-Einträge:
* * * * * /usr/bin/wget http://api.us/application/
* * * * * sleep 10; /usr/bin/wget http://api.us/application/
* * * * * sleep 20; /usr/bin/wget http://api.us/application/
* * * * * sleep 30; /usr/bin/wget http://api.us/application/
* * * * * sleep 40; /usr/bin/wget http://api.us/application/
* * * * * sleep 50; /usr/bin/wget http://api.us/application/
In dieser Konfiguration wird der erste Eintrag zu Beginn jeder Minute ausgeführt. Die nächsten Einträge verwenden Sleep-Befehle, um ihre Ausführung um 10, 20, 30, 40 und 50 Sekunden zu verzögern. Dies erzeugt ein Muster, bei dem der Befehl alle 10 Sekunden während jeder Minute ausgeführt wird.
Diese Methode hilft Ihnen, die Ein-Minuten-Grenze von Cron zu umgehen und Ihre Aufgabe in 10-Sekunden-Intervallen auszuführen.
Tipp: Protokollierung der Cron-Job-Ausführung
Um die Ausführung Ihrer Cron-Jobs zu überwachen und zu überprüfen, ob sie in den richtigen Intervallen laufen, fügen Sie jedem Eintrag einen Protokollierungsbefehl hinzu. Zum Beispiel:
* * * * * /usr/bin/wget http://api.us/application/ && echo "$(date): Job ausgeführt" >> /var/log/cron_job.log
* * * * * sleep 10; /usr/bin/wget http://api.us/application/ && echo "$(date): Job ausgeführt" >> /var/log/cron_job.log
Dies erstellt eine Protokolldatei mit Zeitstempeln für jede Job-Ausführung und hilft Ihnen, Ihre Cron-Konfiguration zu verfolgen und zu debuggen.