Pular para o conteúdo

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.
Diogo Menezes cn9boy
Hits: 167.314 Categoria: Linux Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar

Parte 2: 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!

   1. Introdução
   2. Entendendo o agendamento

Criando e fechando portas no seu Linux

Configurando o Velox no seu Linux

Usando direcionadores de fluxo

Linux, porque não?

Mplayer - Instalação e utilização

Instalando o Linux em HD SATA (SCSI)

C# no Slackware

Relatórios Personalizados no OcoMon

Já falamos do PC Popular, mas será que o laptop também é ruim?

Celestia, simulador espacial em tempo real

#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

Entre na sua conta para comentar.