Mi trovo in una situazione in cui un cron job che pensavo fosse in esecuzione ogni 55 minuti è in realtà in esecuzione a 55 minuti dopo l'ora e nella parte superiore dell'ora. In realtà, non è un cron job, ma è un PHP scheduling application che usa la sintassi di cron.Come funzionano i "passaggi" di Cron?
Quando chiedo a questa applicazione di pianificare un lavoro ogni 55 minuti, crea una riga crontab come la seguente.
*/55 * * * *
Questa linea crontab finisce non esecuzione di un lavoro ogni 55 minuti. Invece un lavoro viene eseguito a 55 minuti dopo le ore e alla fine dell'ora. Non lo desidero. Ho eseguito questo però un cron tester, e verifica che il comportamento indesiderato sia corretto comportamento cron.
Questo mi porta a cercare cosa significa in realtà lo /
. Quando ho guardato il cron manual ho imparato la barra indicato "passi", ma il manuale di per sé un po 'confusa su quello che significa
valori passo può essere utilizzato in combinazione con le gamme. Seguendo un intervallo con "
<number>
" specifica salta il valore del numero attraverso l'intervallo. Ad esempio, "0-23/2
" può essere utilizzato nel campo ore per specificare l'esecuzione del comando ogni altra ora (l'alternativa nello standard V7 è "0,2,4,6,8,10,12,14,16,18,20,22"
). I passaggi sono consentiti anche dopo un asterisco, quindi se si desidera dire" ogni due ore ", basta usare '*/2
'.
descrizione del manuale ('specifica salti di valore del numero attraverso la gamma') è un po 'vago, e 'l'esempio ogni due ore' è un po' ingannevole (che è probabilmente ciò che ha portato al bug nell'applicazione)
Così, due domande:
In che modo il programma unix cron utilizza le informazioni "step" (il numero dopo una barra) per decidere se saltare un lavoro? (divisione modulare? Se sì, su cosa? Con quali condizioni decidere una corsa "vera" e quali decisioni no? O è qualcos'altro?)
È possibile configurare un processo cron di unix da eseguire ogni " N "minuti?
@shellter Non voglio eseguirlo a soli 55 dopo l'ora, voglio eseguirlo ogni 55 minuti. Correre alle 55 dopo le ore sarebbe una volta all'ora. Più alla mia domanda, voglio sapere come funziona la funzione "steps" e se è possibile dire "ogni N minuti" indipendentemente da cosa sia N. –
Per il down-vote/closer - questa domanda riguarda il modo in cui la logica di programmazione di cron è ** programmata **, a supporto della scrittura di software contro un pacchetto PHP che utilizza la logica cron. Sembra abbastanza in tema –