Rodando um CRON a cada quinze minutos

Eu sei que isto é uma dica básica. Mas como eu tive que tirar a dúvida de um colega esta semana aproveitei para migrar a dica para cá.

No fim, a pergunta foi a seguinte. Quando eu configuro o cron do modo abaixo :

*/15 * * * * /meu/comando

Como eu garanto que realmente ele irá rodar nas horas certas, ou seja, no minuto 0, no minuto 15, no minuto 30 e no minuto 45 ?

Como a coisa sempre foi muito mecânica nunca havia parado para pensar sobre isto. E procurando na internet ( e lendo o man, lógico, cheguei a resposta ).

Para quem não conhece o cron, ele é o famoso agendador de tarefas dos sistemas Unix . Ou seja, todas as vezes que você precisar de colocar algum comando ( ou tarefa ) para rodar de tempo em tempo, é o cron que irá lhe ajudar.

O cron usa uma sintaxe específica, onde você irá especificar o minuto - hora - dia do mês - dia da semana . E é bom lembrar que caso não haja nenhum valor ( ou seja, ele irá rodar em todos os dias da semana, toda hora do dia etc ) você pode usar o * que é o famoso caracter coringa.

Mas vamos a dúvida em si. Quando queremos rodar um comando no cron a cada quinze minutos de cara você irá pensar no seguinte modelo, não é ?

0,15,30,45 * * * * /meu/comando

Caso você queira rodar a cada quinze minutos, mas, começando a rodar no minuto 5 por exemplo. Ou seja rodando nos minutos 5, 20, 35 e 50 .

5,20,35,50 * * * * /meu/comando

Ou seja, faz sentido você usar esta sintaxe somente no segundo motivo, onde você não segue o padrão de horas inteiras ( 0, 15, 30, 45 ).

Portanto a resposta é, o formato abaixo :

*/15 * * * * /meu/comando

É uma sintaxe simplificada do comando abaixo :

0,15,30,45 * * * * /meu/comando

Uma curiosidade que eu nunca tinha parado para pensar até receber esta pergunta hoje no meu colo.

Vivendo e aprendendo … né ?

Via The ElectricToolbox