Esegui un processo cron ogni 5 minuti tra due volte


18

C'è un modo per specificare un lavoro che viene eseguito ogni 5 minuti tra un'ora di inizio e qualche ora di fine nei giorni lavorativi in ​​un crontab?

Aggiornamento Penso che sia rilevante che i miei orari di inizio e fine non siano ad ore tonde. Pertanto, specificare 9-5 nella colonna dell'ora non è sufficiente. Voglio 9: 30-17: 30.

Risposte:



1

Se la risposta di Ignacio Vazquez-Abrams non funziona davvero per te, ad esempio perché lo script ha bisogno di un gran numero di parametri o i criteri di invocazione sono non banali (o non limitati nel tempo), allora un approccio alternativo è quello di rendere semplice script wrapper, chiama lo script wrapper a intervalli regolari e chiedi allo script wrapper di controllare l'ora corrente e di invocare lo script principale.

Per esempio:

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

Ciò consente di codificare i criteri di esecuzione più complessi di quelli che la sintassi di cron consente prontamente, a spese relativamente piccole di invocare regolarmente una shell e uno script separato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.