Como Agendar Tarefas no Cron/Crontab
E ai pessoal!
Hoje vou falar um pouco sobre agendamentos de tarefas no cron.
Esse blog também vai servir de referência para mim mesmo com relação à algumas coisas, portanto aquilo que vira e mexe eu pesquiso na internet também virá parar aqui.
Eu não sou configurador de ambientes, portanto não consigo gravar muito os comandos do Linux e devido a isso decidi postar isso aqui no blog.
No momento necessito agendar uma tarefa no meu ambiente Linux que deve ser executado pelo PHP e para isso usarei o cron do meu ubuntu para executar essa tarefa em um determinado dia e hora.
Pesquisando sobre isso cheguei ao seguinte desenho:
Que corresponde ao texto abaixo:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
De acordo com o desenho e o texto acima podemos ver claramente que:
* é referente a minutos
* é referente a Horas
* é referente a dia do Mês
* é referente ao mês
* é referente ao dia da semana
No sexto parâmetro podemos especificar o usuário que irá executar a tarefa;
E finalmente no sétimo parâmetro poderemos especificar o comando a ser executado.
Mas antes disso tudo temos que saber como chegar ao arquivo onde agendamos as tarefas, certo?
Bom, para agendar uma tarefa basta digitar o comando “crontab -e” (pelo menos é esse o comando no ubuntu, não sei se é o mesmo nas outras distribuições) que o arquivo onde você agendará as tarefas será aberto.
Com isso podemos finalmente agendar a nossa tarefa.
Como exemplo aqui vou utilizar o meu próprio site SeminovosVJM que tem a necessidade executar um script de estatísticas toda segunda-feira as 2 horas da madrugada.
Como alguns já devem saber devido a postagens anteriores aqui no blog, o framework por mim utilizado no momento é o CakePHP e no CakePHP temos um tipo de classe denominado Shell que são classes que são executadas via linha de comandos para diversos motivos. Bom, o meu motivo é o que eu disse acima. Preciso enviar um relatório estatístico aos meus clientes todas as segundas-feiras as 2 horas da madrugada.
Então mãos a obra.
O comando por mim utilizado foi:
00 2 * * 1 cd /caminho/da/aplicacao && Console/cake EstatisticasAnuncios >> /caminho/da/aplicacao/tmp/logs/estatisticasAnuncios.log
De acordo com o que foi visto lá em cima temos o seguinte:
00 minutos
02 horas
* dia do mês não especificado
* mês não especificado
1 segunda-feira
Não foi especificado o usuário
E o comando foi “cd /caminho/da/aplicacao && Console/cake EstatisticasAnuncios >> /caminho/da/aplicacao/tmp/logs/estatisticasAnuncios.log”
Explicando o comando:
Comando “cd” entrar na pasta “aplicacao" que está no caminho “/caminho/da/” e “&&” (é “i” mesmo) executar script que está no caminho “Console/cake” a Shell do CakePHP "EstatisticasAnuncios" e “>>” tudo que sair na console gravar em um arquivo no caminho “/caminho/da/aplicacao/tmp/logs/” chamado “estatisticasAnuncios.log”.
Bom pessoal, é isso.
Espero que tenha ficado tão didático quanto eu gostaria.
A partir disso dá para fazer diversas variações, inclusive executar alguma tarefa com intervalos de tempo como exemplo vamos pensar no seguinte:
Tenho que executar uma rotina/tarefa a cada 15 minutos para verificar um pagamento no PagSeguro (Como se o meu site fosse tão popular assim :-D).
*/15 * * * * cd /caminho/da/aplicacao && Console/cake VerificarPagamentoPagSeguro >> /caminho/da/aplicacao/tmp/logs/VerificacaoPagamentoPagSeguro.log
Se falei alguma bobagem, por favor me perdoem, como eu disse, sou apenas desenvolvedor e não especialista em ambientes operacionais. Mas, de qualquer forma é sempre bom saber as besteiras que postamos na internet, portanto se você estiver lendo esse texto e o blog já estiver apresentável (Porque não estaria? Leia "O início desse Blog") por favor deixe o seu comentário, mas se tiver algum elogio a fazer, também pode deixar o seu comentário.
Até a próxima e um forte abraço!
Fontes:

Comentários
Postar um comentário