2009-02-25 10 views
187

Sto cercando di aggiungere una voce crontab per eseguire uno script ogni 30 minuti, all'ora e 30 minuti oltre l'ora o qualcosa di simile. Ho il seguente, ma non sembra funzionare su 0.Come posso far funzionare un cron job ogni 30 minuti?

*/30 * * * * 

Che corda devo usare?

Il cron è in esecuzione su OSX.

+0

Sei riuscito a far funzionare il tuo crontab? Il tuo problema potrebbe non essere il crontab, ma ottenerlo per essere usato. – Eddie

+0

È in esecuzione altri 2 script, uno ogni minuto. –

+1

Sto aspettando di vedere se una delle risposte qui sotto funziona, devi solo aspettare che i prossimi 30 minuti siano scaduti ... tra 3 minuti. –

risposta

429

Do:

0,30 * * * * your_command 
+1

Funziona alla grande! In CentOS crontab, dovevo fare qualcosa come '0,30 * * * * root your_command' dove root sarebbe l'utente che sto usando. – prograhammer

+1

Che ne dici di questo '0/30 * * * * tuo_comando'? – ihue

+0

@prograhammer - Questa riga faceva parte di un crontab di una radice o di un altro crontab di un utente? –

69

Prova questa:

0,30 * * * * your command goes here 

Secondo il funzionario di Mac OS X crontab(5) manpage, la sintassi / è supportato. Quindi, per capire perché non ha funzionato per te, dovrai controllare i registri di cron. In questi registri, è trovare un messaggio di errore chiaro.

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

+0

Ho sempre usato */30 con successo ma non ricordo una mia domanda dove era troppo critico se funzionasse solo una volta all'ora quindi non penso Ho mai controllato. –

+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 vecchi UNIX non supportano */xx – Eddie

+0

La tua risposta ha funzionato, ma Vlad ha meno rappresentanti, quindi gli ho fornito i punti. –

4

Hai menzionato che stai usando OS X- Ho usato cronnix in passato. Non è così geek come modificarlo da solo, ma mi ha aiutato a capire quali sono le colonne in un batter d'occhio. Solo un pensiero.

+0

Potrebbe essere altrimenti utile. –

+0

@ Allyn: ora è un collegamento morto. Questo assomiglia a quello nuovo: https://roaringapps.com/app/cronnix –

8

Se il processo cron è in esecuzione solo su Mac OS X, è possibile utilizzare invece launchd.

Da Scheduling Timed Jobs (official Apple docs):

Nota: Anche se è ancora supportato, cron non è una soluzione consigliata. È stato deprecato a favore di launchd.

È possibile trovare ulteriori informazioni (ad esempio launchd Wikipedia page) con una semplice ricerca sul Web.

54

crontab non capisce "intervalli", si capisce solo "schedule" ore

validi: 0-23 - minuti validi: 0-59

esempio # 1

30 * * * * your_command

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

esempio # 2

*/30 * * * * your_command

questo significa "correre quando il minuto di ogni ora è divisibile per 30" (si porrebbe in: 1:30, 02:00, 2 : 30, 03:00, ecc)

esempio # 3

0,30 * * * * your_command

questo significa "correre quando il minuto di ogni ora è 0 o 30" (si porrebbe in: 1:30, 02:00, 02:30, 03:00, ecc)

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

esempio # 4

19 * * * * your_command

questo significa "esecuzione quando minuto di ciascun ora è 19 "(si porrebbe in: 01:19, 02:19, 03:19, ecc)

esempio # 5

*/19 * * * * your_command

questo significa" correre quando minuto di ogni ora è divisibile per 19 "(si porrebbe in: 01:19, 01:38, 01:57, 02:19, 02:38, 02:57, ecc)

nota: diversi parametri sono state fatte a questo post da vari utenti tra cui il autore