2014-05-24 13 views
5

Ho un lavoro cron semplice all'interno cPanel che viene eseguito ogni 2 minuti:Esegui processo cron ogni 2 minuti successivi al primo minuto "0" della prima ora "0"

*/2 * * * * 

Di default il "0" minuto è l'inizio del cron job come 0,2,4,6,8,10 ecc ...

Come saltare il "0" minuto dell'ora "0" (12AM) nel cron? Lo faccio perché questo cron dipende da un altro cron che viene eseguito una volta al giorno alle 12:00. Quindi non voglio che si sovrappongano.

In breve, ho bisogno che questo cron venga eseguito ogni 2 minuti eccetto 00:00 alle 12:00.

+2

A chiunque abbia votato, perché ?? Se non hai una risposta, salta semplicemente questa sciocchezza per favore! –

+0

Il modo migliore per gestire una cosa del genere è far funzionare il cron job ogni 2 minuti, ma regolare la logica nel proprio script (PHP?) Semplicemente per non andare in cima all'ora in nessuna circostanza. – JakeGould

+0

@Jake: è quello che sto già facendo, ma penso che ci dovrebbe essere un modo per farlo usando cron. –

risposta

12

Questo è il vostro lavoro cron:

*/2 * * * * 

Ma poi si Stato:

Come saltare il "0" minuto della "0" ore (00:00) nella cron? Lo faccio questo perché questo cron dipende da un altro cron che viene eseguito una volta al giorno alle 12:00. Quindi non voglio che si sovrappongano.

Il problema non è il processo cron ma piuttosto la logica dello script. Forse potresti fare qualcosa di simile nel creare un qualche tipo di indicatore nel primo lavoro che il secondo lavoro avrebbe rilevato, in modo che non entrassero in conflitto.

Forse si dovrebbe solo cambiare il vostro cron essere la poco elegante, ma specifica di ogni 2 minuti come questo:

2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * 

Un concetto sarebbe quello di combinare un intervallo (2-58) con una frequenza (*/2), ma non chiaro se questo potrebbe funzionare.

2-58/2 * * * * 

EDIT: accordo con il commento lasciato dal poster originale:

In breve, ho bisogno di questo cron per eseguire ogni 2 minuti, tranne 00:00.

Se questo è il caso, potrebbe essere necessario impostare un mix di cron jobs in questo modo:

*/2 1-23 * * * 
2-58/2 0 * * * 

La prima voce di cron correrebbe il lavoro ogni 2 minuti dalle 01:00 alle 11: 12:00.

La prossima voce di cron eseguirà il lavoro ogni 2 minuti da 2-58 minuti solo a mezzanotte. Poiché questo secondo lavoro salta lo 0 durante la 0 ora di mezzanotte, questa combinazione dovrebbe funzionare per voi.

Detto questo, questo tipo di logica a doppia entrata è il motivo per cui è effettivamente incoraggiato gli sviluppatori ad espandere la logica delle app per evitare determinati scenari che non funzioneranno.

Ad esempio, ho alcuni script di bash che creano file di blocco nella directory standard Unix /tmp.Sono impostati per funzionare ogni 5 minuti, ma lo script stesso ha la logica per assicurarsi che la prima cosa che fa prima di tutto è controllare se quel blocco è presente. Se la serratura è lì? Fare niente. Se la serratura non c'è, impazzisci!

+0

c'è effettivamente "nessun problema". Penso che ci dovrebbe essere un modo per farlo in pura sintassi cron. Solo per chiedere. Se non avrò una risposta, continuerò a farlo in PHP perché sono già –

+0

@MichaelSamuel Finora sono l'unica risposta, e se hai intenzione di rimanere impiccato con me usando la parola "problema" allora devi fare un passo indietro. Se c'è una soluzione migliore, sono felice di votare. Ma la mia risposta comprende ciò che capisco che i compiti di cron siano realisticamente in grado di fare. – JakeGould

+1

Ho cercato già prima di pubblicare questa domanda e ho ottenuto che è possibile fare qualcosa di simile: '5-59/20 * * * *' verrà eseguito a 5 minuti dopo, 25 minuti dopo e 45 minuti dopo. Ma è metà della soluzione. L'altra metà è come saltare la prima ora? In breve, ho bisogno che questo cron venga eseguito ogni 2 minuti tranne 12AM –

Problemi correlati