2009-04-14 13 views
12

Come posso far funzionare un cron job ogni 72 minuti? O qualche numero non così carino come quello?Come fare un cron job ogni 72 minuti

+0

Perché deve essere 72 minuti? – Zifre

+0

Non deve essere, solo qualcosa che non è un numero pari bello. –

risposta

3

Non è possibile eseguire direttamente da cron/crontab.

I lavori cron vengono eseguiti su una pianificazione specifica, non su un intervallo specifico.

Un'alternativa sarebbe quella di elaborare un programma che si avvicinava al tuo "ogni 72 minuti" eseguendo a mezzanotte, 1:12, 2:24, 3:36, ... e allungandolo per approssimare il colpo a mezzanotte. Il tuo file crontab potrebbe specificare tutte queste volte come tempi da eseguire.

Un'altra alternativa sarebbe quella di avere un'applicazione separata per gestire la pianificazione e attivare l'applicazione.

22

Utilizzare a (uomo a). Fai in modo che l'app o lo script di avvio calcolino un tempo di avvio di 72 minuti in futuro e pianifichi di eseguirlo nuovamente prima che inizi a funzionare.

Disponibile anche su Windows XP e Vista.

Ecco un esempio per GNU/Linux: a command.sh -f ora + 72 minuti

+1

s/pianificarlo/pianificare se stesso per eseguire di nuovo/ –

+1

Speriamo che questa diventi la risposta accettata. Una volta avviato il lavoro, può riprogrammare se stesso ogni volta che viene eseguito. Potresti scoprire che sei fuori sincrono, comunque; quindi assicurati di riprogrammare il tuo posto di lavoro come prima cosa nel tuo script piuttosto che nell'ultimo. –

2

Avrai bisogno di impostare esattamente 20 compiti per questo - vale a dire impostare una alle 00:00, prossimo a 01 : 12, il prossimo alle 02:24, ecc.

20 iterazioni di un giorno intero.

Sfortunatamente, questo è l'unico modo per farlo, poiché le attività di cron sono impostate in anticipo in una pianificazione fissa invece di essere eseguite, ad esempio, "dopo X minuti è stata eseguita l'ultima operazione".

33

Dato che cron esegue processi basati sul tempo, non a intervalli, non esiste un modo incredibilmente semplice per farlo. Tuttavia, sebbene sia un po 'un trucco, puoi impostare più righe in crontab finché non trovi il denominatore comune. Dal momento che si vuole un lavoro per eseguire ogni 72 minuti, si deve eseguire con i seguenti orari:

  • 00:00
  • 01:12
  • 02:24
  • 03:36
  • 04 : 48
  • 06:00
  • 07:12
  • ...

Come si può vedere, il motivo si ripete ogni 6 ore con 5 lavori. Quindi, si avrà 5 linee nel vostro crontab:

 
0 0,6,12,18 * * * command 
12 1,7,13,19 * * * command 
24 2,8,14,20 * * * command 
36 3,9,15,21 * * * command 
48 4,10,16,22 * * * command 

l'altra opzione, naturalmente, è quello di creare uno script wrapper daemon o shell che esegue e dorme per il tempo desiderato fino all'arresto.

4

È sempre possibile eseguire l'approccio di attivazione di cron ogni minuto e interrompere immediatamente lo script se è stato eseguito più di 72 minuti prima.

2

Non utilizzare cron ...

#!/bin/sh 
while [ true ] 
do 
    sleep 4320 
    echo "Put your program here" & 
done 
+1

Fai attenzione se il programma si blocca, dovrai riavviarlo. Inoltre, dopo un riavvio della macchina, il programma non sarà in esecuzione, dovrai avviarlo. –

+0

Sì, meglio renderlo un demone e usare monit per esempio per tenerlo in esecuzione. – mahemoff

-2

Uh so che questo è attesa da tempo, ma mi stava guardando alcuni problemi di pianificazione e ho visto questa domanda.

solo fare questo nel vostro crontab

*/72 * * * * /home/script.sh

+4

non funziona, almeno non con vixie cron 3.0 – hop

+2

I minuti sono 0-59. http://www.pantz.org/software/cron/croninfo.html – dresende

+1

Questo non funzionerà, i minuti sono 0-59 e qualsiasi cosa oltre 30 minuti pubblicherà x passato, cioè 34 posteranno a 34 minuti passati, non tutti 34 minuti. – omega1