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é ?