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

Postagens mais visitadas deste blog

Como Configurar o MySQL no Windows - MySQL ZIP

O início desse blog