Come farei a eseguire un processo cron ogni 30 minuti?


224

Sto cercando di aggiungere una crontabvoce per eseguire uno script ogni 30 minuti, nell'ora e 30 minuti dopo l'ora o qualcosa di simile. Ho il seguente, ma non sembra funzionare su 0.

*/30 * * * *

Quale stringa devo usare?

Il cron è in esecuzione su OSX.


Sei riuscito a far funzionare il tuo crontab? Il tuo problema potrebbe non essere il crontab, ma farlo usare.
Eddie,

Esegue altri 2 script, uno ogni minuto.
Darryl Hein,

1
Sto aspettando di vedere se una delle risposte di seguito funziona, devo solo aspettare che i prossimi 30 minuti siano scaduti ... tra 3 minuti.
Darryl Hein,

2
... Non potresti semplicemente cambiare da 0,30 a 0,5? Se 0,5 funziona, perché non 0,30?
George Stocker,

1
Non ci hai mai detto se ha funzionato all'ora!
Eddie,

Risposte:


487

Fare:

0,30 * * * * your_command

1
Funziona alla grande! Nel crontab di CentOS, dovevo fare qualcosa di simile a 0,30 * * * * root your_commanddove root sarebbe l'utente che sto usando.
prograhammer

@prograhammer - Questa linea faceva parte del crontab di una radice o del crontab di altri utenti?
Muhamed Huseinbašić,

@ MuhamedHuseinbašić buona domanda, dal momento che ci sono 2 crontab diversi (quello globale e quindi un utente). Dovrò controllare e vedere ...
prograhammer

100

crontab non capisce "intervalli", capisce solo "programma"

ore valide: 0-23 - minuti validi: 0-59

Esempio 1

30 * * * * your_command

questo significa "corri quando il minuto di ogni ora è 30 " (funzionerebbe a: 1:30, 2:30, 3:30, ecc.)

esempio n. 2

*/30 * * * * your_command

questo significa "corri quando il minuto di ogni ora è uniformemente divisibile per 30 " (funzionerebbe a: 1:30, 2:00, 2:30, 3:00, ecc.)

esempio n. 3

0,30 * * * * your_command

questo significa "corri quando il minuto di ogni ora è 0 o 30 " (funzionerebbe a: 1:30, 2:00, 2:30, 3:00, ecc.)

è un altro modo per ottenere gli stessi risultati dell'esempio n. 2

esempio n. 4

19 * * * * your_command

questo significa "corri quando il minuto di ogni ora è 19 " (funzionerebbe a 1:19, 2:19, 3:19, ecc.)

esempio n. 5

*/19 * * * * your_command

questo significa "corri quando il minuto di ogni ora è uniformemente divisibile per 19 " (funzionerebbe a 1:19, 1:38, 1:57, 2:19, 2:38, 2:57 ecc.)

nota: diversi utenti sono stati apportati a questo post da vari utenti, incluso l'autore


76

Prova questo:

0,30 * * * * your command goes here

Secondo la manpage ufficiale di Mac OS X crontab (5) , la /sintassi è supportata. Quindi, per capire perché non ha funzionato per te, dovrai guardare i log di cron. In quei registri, dovresti trovare un chiaro messaggio di errore.

Nota: Mac OS X sembra usare Vixie Cron, lo stesso di Linux e dei BSD.


Ho sempre usato * / 30 con successo, ma non ricordo una mia applicazione in cui era troppo critico se funzionava solo una volta all'ora, quindi non credo di aver mai controllato.
Adam Hawes,

2
@Adam Hawes: ho anche usato * / xx con successo in passato, ma su Linux e altri UNIX. Non ho provato personalmente Mac OSX. La domanda originale non diceva quale sistema operativo. Alcuni UNIX meno recenti non supportano * / xx
Eddie,

Anche la tua risposta ha funzionato, ma Vlad ha meno rappresentanti, quindi gli ho dato i punti.
Darryl Hein,

1
@DarrylHein lol, oggi Eddie ha meno ripetizioni :-p. Ho votato Eddie.
Beginer,


5

Dici che stai usando OS X: ho usato cronnix in passato. Non è così geniale come modificarlo da soli, ma mi ha aiutato a capire quali sono le colonne in un batter d'occhio. Solo un pensiero.


Questo potrebbe essere utile altrimenti.
Darryl Hein,

3

Puoi utilizzare entrambi " simboli , ' O dividi ' / '.
Ma " / " è migliore.
Supponiamo che il caso di "ogni 5 minuti". Se usi ' , ', devi scrivere il lavoro cron come segue:

0,5,10,15,20,25,30,35,....    *      *     *   * your_command

Significa eseguire your_command in ogni ora in tutti i minuti definiti: 0,5,10, ...

Tuttavia, se si utilizza '/', è possibile scrivere il seguente lavoro semplice e breve:

*/5  *  *  *  *  your_command

Significa che esegui il tuo_comando nei minuti che sono divisibili per 5 o in parole più semplici, '0,5,10, ...'

Quindi, il simbolo divisibile '/' è sempre la scelta migliore;

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.