Agendando tarefas com o crontab

Muitas vezes precisamos agendar tarefas que usamos regularmente para uma execução automática e para isso o cron é uma ótima solução. Com ele você pode agendar tarefas com data e hora marcadas, confira como nesse artigo.

[ Hits: 152.678 ]

Por: Diogo Menezes em 21/03/2005 | Blog: http://www.diogomenezes.com


Entendendo o agendamento



Ao executar o comando "crontab -e", seu editor de texto abrirá (provavelmente o vi) e aí você já poderá começar a agendar suas tarefas. Vejamos a estrutura abaixo:

Minuto   Hora   Dia do mês   Mês   Dia da Semana   Comando  

Essa é a ordem em que as informações devem ser inseridas.

Exemplo:

30 14 5 * * tar zcvf /bkp.tar.gz /etc

No exemplo acima ficará agendado para todo dia 5 de todo mês às 14:30 o comando "tar zcvf /bkp.tar.gz /etc".

Os campos e seus valores:

Campo Valores
Minuto 0-59
Hora 0-23
Dia do Mês 1-31
Mês 1-12
Dia da Semana 0-6 ( 0=domingo, 1=segunda etc.)


Sendo o "*" correspondente a todas as possibilidades.

Tendo como base os conceitos acima, agendaremos um comando para listar o conteúdo de um certo diretório de 2 em 2 minutos, somente de Segunda à Sexta.

$ crontab -e

*/2 * * * 1-5   ls -lah  

OBS: Não esqueça de salvar o arquivo (no caso do "vi" use o ESC e depois :x para salvar e sair).

Para passar mais de um valor a qualquer campo utilize a "," (vírgula). Confira:

$ crontab -e

10,30,45  19  1,15  *  *  tar zcvf /bkp.tar.gz /etc

O comando acima executará o comando "tar zcvf /bkp.tar.gz /etc" todos os dias 1 e 15 do mês às 19:10, 19:30 e 19:45h.

Para listar as tarefas agendadas execute:

$ crontab -l

Para apagar todo o conteúdo agendado execute:

$ crontab -d

Espero que tenha ajudado.

Abraços e até a próxima!

Página anterior    

Páginas do artigo
   1. Introdução
   2. Entendendo o agendamento
Outros artigos deste autor

Usando direcionadores de fluxo

Criando e fechando portas no seu Linux

Mplayer - Instalação e utilização

Configurando o Velox no seu Linux

Linux, porque não?

Leitura recomendada

Instalação do Arch Linux com LVM + Luks

Fazendo o Palm/Treo Funcionar no Ubuntu/KUbuntu

Abrindo os logs automaticamte em consoles e monitorando-os pelo browser

Como ver as informações de rede no Linux

MOC - O player de áudio para consoles

  
Comentários
[1] Comentário enviado por vagnerd em 22/03/2005 - 15:04h

Bom artigo xD e bem simples!

Parabens!

[2] Comentário enviado por agk em 31/03/2005 - 19:01h

Parabéns, bem explicado a parte do agentamento.

[3] Comentário enviado por kamal em 20/03/2006 - 12:14h

Ficou muito legal cara, tava precisando de um artigo assim como o seu: simples e que ensina de maneira rapido. Parabens.

[4] Comentário enviado por fchevitarese em 21/02/2007 - 08:37h

será que vc pode me ajudar? eu tenho um script de minha autoria que não funciona no crontab!
já dei todas as permissões, no próprio cron especifico o usuário que pode executá-lo mas nada acontece!

Gostaria de saber se vc pode me ajudar, pois outras coisas funcionam no cron!

Vlws

[5] Comentário enviado por emmacedo em 21/07/2008 - 13:48h

Olá, estou com uma dúvida, será que se eu colocar */15 para o "Dia do Mês" ele vai rodar de 15 em 15 dias?

[6] Comentário enviado por othelo em 23/07/2008 - 17:12h

Putz cara... esse artigo quebrou meu galho... tava precisando montar um agendamento e foi precioso o roteiro do crontab...
valeu mesmo.. abracos

[7] Comentário enviado por marcelovegano em 10/10/2008 - 19:54h

Vou testar hoje isso...vamos ver se funciona mesmo...HUHUIuihiuhUhUI

[8] Comentário enviado por almirneo em 07/11/2008 - 16:41h

Vlw mesmo cara, ótimo artigo, direto e objetivo.
Eu estava tentando editar o arquivo /etc/crontab pelo vi e não dava certo ele não agendava a tarefa, mas através do crontab -e deu certinho.
vlw mesmo.

[9] Comentário enviado por gersonraymond em 16/02/2009 - 07:03h

Muito bem explicado, parabéns contínuo para este artigo.

[10] Comentário enviado por guiguix em 22/07/2009 - 15:24h

Só pra constar, podemos deixar que o próprio site tenha vida própria, executando os scripts php (ou ASP, ou ainda JSP, etc etc etc) de modo automático:
AGENDAR O BACKUP OU ENVIO DE E-MAILS ATRAVÉS DO PHP:
$crontab -e
*/5 * * * * wget -q -O /dev/null http://[meusite.com.br]/[minhapasta]/meu_arquivo.php

// exemplo adaptado do site do moodle - instalação

Ou seja: o programa wget baixa o "meu_arquivo.php", quando acessa, executando os comandos php deste arquivo! Assim o site terá "vida própria".
Nota: Se preferir, faça um .htaccess liberando o acesso da pasta [minhapasta] apenas para a máquina responsável pelo carregamento do script, que no meu caso foi a localhost (muitas vezes o próprio serviço de hospedagem oferece o serviço cron [no cPanel] ).

[11] Comentário enviado por volcom em 22/03/2010 - 09:32h

O campo dia da semana pode ser usado também de 0 à 7, onde 0 e 7 representam o domingo.

[12] Comentário enviado por removido em 04/01/2011 - 03:21h

Meu velho um erro no seu artigo...

Na verdade não será "provavelmente o VI" mas sim o editor que estiver por default(padrão) e caso você não seja muito "enturmado" com o VI apenas mudo o editor padrão com o comando:

eu@px:#~select-editor

[13] Comentário enviado por cngbinho em 22/06/2011 - 17:01h

Ola, galera eu to com um problema para cria um cron.
Eu preciso entender o que esse exemplo ai abaixo faz por que eu preciso criar um igual.
Eu ja inseri uma linha no no crontab igual mais não me acontece nada..
Alguem que tenha conhecimento pode me explicar melhor esse cron?
E como faço para saber se ta rodando o cron, eu usu o ubunto.

0 * * * * cd '/home/wwwbara/public_html/' php -q chechupdate.php -p processqueue > /dev/null ;


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts