Uruchom zadanie cron co dwa minuty między dwoma razy

17

Czy istnieje sposób na określenie zadania, które będzie uruchamiane co 5 minut między czasem rozpoczęcia a czasem zakończenia w dniach roboczych w pliku crontab?

Aktualizacja Wydaje mi się, że istotne jest, aby moje czasy rozpoczęcia i zakończenia nie były w okrągłych godzinach. Podanie 9-5 w kolumnie godziny nie wystarczy. Chcę 9: 30-17: 30.

metafora pytoniczna
źródło

Odpowiedzi:

23

Musisz to zrobić fragmentarycznie:

30-59/5 9 * * * script.sh
*/5 10-16 * * * script.sh
0-30/5 17 * * * script.sh
Ignacio Vazquez-Abrams
źródło
1

Jeśli odpowiedź Ignacio Vazquez-Abramsa naprawdę nie działa, na przykład dlatego, że skrypt wymaga dużej liczby parametrów lub kryteria wywołania nie są trywialne (lub nie są ograniczone czasowo), wówczas alternatywnym podejściem jest stworzenie prostej skrypt opakowujący, wywoływaj skrypt opakowujący w regularnych odstępach czasu, a skrypt opakowujący sprawdza bieżącą godzinę i wywołuje skrypt główny.

Na przykład:

#/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 ...

Pozwala to na kodowanie kryteriów wykonywania bardziej złożonych niż pozwala na to składnia crona, przy stosunkowo niewielkim koszcie regularnego wywoływania powłoki i oddzielnego skryptu.

CVn
źródło