Führen Sie zwischen zwei Zeitpunkten alle 5 Minuten einen Cron-Job aus

18

Gibt es eine Möglichkeit, einen Job anzugeben, der alle 5 Minuten zwischen einer Startzeit und einer Endzeit an Werktagen in einer Crontab ausgeführt wird?

Update Ich halte es für relevant, dass meine Start- und Endzeiten nicht rund um die Uhr sind. Die Angabe von 9-5 in der Stundenspalte reicht also nicht aus. Ich möchte 9: 30-17: 30.

pythonische Metapher
quelle

Antworten:

24

Sie müssen es stückweise tun:

30-59/5 9 * * * script.sh
*/5 10-16 * * * script.sh
0-30/5 17 * * * script.sh
Ignacio Vazquez-Abrams
quelle
1

Wenn die Antwort von Ignacio Vazquez-Abrams für Sie nicht wirklich funktioniert, z. B. weil das Skript eine große Anzahl von Parametern benötigt oder die Aufrufkriterien nicht trivial (oder nicht zeitgebunden) sind, können Sie einen einfachen Ansatz wählen Wrapper-Skript, rufen Sie das Wrapper-Skript in regelmäßigen Abständen auf und lassen Sie das Wrapper-Skript die aktuelle Uhrzeit überprüfen und das Hauptskript aufrufen.

Beispielsweise:

#/bin/bash

# Check to see if we should run the script now.
HOUR=$(date +%H)
MINUTE=$(date +%M)
if test $HOUR -lt 9; then exit 0; fi
if test $HOUR -eq 9 -a $MINUTE -lt 30; then exit 0; fi
if test $HOUR -eq 17 -a $MINUTE -gt 30; then exit 0; fi
if test $HOUR -gt 17; then exit 0; fi

# All checks passed; we should run the script now.
exec script.sh ... long list of parameters ...

Dies ermöglicht das Codieren von Ausführungskriterien, die komplexer sind, als es die Syntax von cron ohne weiteres zulässt, und zwar auf relativ geringe Kosten des regelmäßigen Aufrufs einer Shell und eines separaten Skripts.

ein CVn
quelle