Usando cron e crontab para agendar tarefas

O cron é um recurso presente no Linux que permite a execução automática de tarefas em datas e horários pré-determinados. O objetivo deste texto é mostrar como utilizá-lo.

[ Hits: 603.980 ]

Por: Emerson Alecrim em 18/01/2005


Como usar o cron



O primeiro passo é abrir o crontab. Para isso, você pode usar editores de textos como vi e o emacs. Também é possível digitar o comando "crontab -e" para editar o arquivo exclusivo de seu usuário. Neste caso, a edição é feita como se você estivesse usando o vi.

O crontab tem o seguinte formato:

[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

O preenchimento de cada campo é feito da seguinte maneira:
  • Minutos: informe números de 0 a 59;
  • Horas: informe números de 0 a 23;
  • Dias do mês: informe números de 1 a 31;
  • Mês: informe números de 1 a 12;
  • Dias da semana: informe números de 0 a 7;
  • Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se o arquivo do próprio usuário for usado);
  • Comando: a tarefa que deve ser executada.

Repare que a ordem desses valores indica o nome correspondente do campo. Por exemplo, no campo mês, 1 a 12 quer dizer de "Janeiro a Dezembro". No caso de dias da semana, 0 a 6 quer dizer de "Domingo a Sábado". Note que o número 7 também pode ser usado. Neste caso, assim como o número 0, o 7 equivale ao dia de "Domingo".

No lugar desses valores, você pode informar * (asterisco) para especificar uma execução constante. Por exemplo, se o campo dias do mês conter *, o comando relacionado será executado todos os dias.

Você também pode informar intervalos no preenchimento, separando os números de início e fim através de - (hífen). Por exemplo, se no campo horas for informado 2-5, o comando relacionado será executado às 2, 3, 4 e 5 horas. E se o comando tiver que ser executado às 2 horas, entre 15 e 18 horas e às 22 horas? Basta informar 2,15-18,22. Nestes casos, você separa os parâmetros por vírgula.

Vamos a um exemplo:

# tarefa 1
30 22 2,10 * * echo "Porque nós amamos a liberdade"

Neste exemplo, a frase "Porque nós amamos a liberdade" é exibida às 22 horas e 30 minutos, nos dias 2 e 10, em todos os meses e em todos os dias da semana. Repare na linha "#tarefa 1". Trata-se de um comentário. Digite # e tudo o que for digitado na linha não será considerado pelo cron. É um recurso útil para inserir descrições quando se tem várias tarefas a serem executadas.

Finalizando


Os recursos do cron não se limitam aos mostrados anteriormente. Você pode ainda agendar tarefas mais complexas e poupar muito trabalho nessas execuções automáticas. É possível, por exemplo, configurar o cron para emitir-lhe um aviso de quando uma tarefa é executada. A dica para lidar com o cron é testá-lo. Experimente-o bastante. Mesmo que você seja apenas um usuário doméstico, certamente encontrará alguma utilidade para o cron.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Como usar o cron
Outros artigos deste autor

Máquina Virtual Java (Java Virtual Machine)

Processos no Linux

O gerenciador de boot GRUB

Leitura recomendada

À procura por pacotes em distros Debian-based (Ubuntu, Linux Mint e outras)

Princípios do APT-GET: Conheça esta fantástica ferramenta do Debian

Gerenciamento de pacotes no Mandriva Linux

Particionamento de disco com o openSUSE

Como Rodar Shell Script e Python via Apache no Linux

  
Comentários
[1] Comentário enviado por fernandoamador em 19/01/2005 - 04:21h

Ótimo artigo

[2] Comentário enviado por leogsouza em 02/11/2005 - 03:01h

Mto bom agora posso programar o sarg pra gerar relatorios diarios do squid

[3] Comentário enviado por removido em 04/08/2006 - 12:42h

Simples e funcional , bom artigo.

[4] Comentário enviado por ebisco em 13/11/2006 - 15:52h

O cron permite fazer um agendamento diario de uma determinada página web?

[5] Comentário enviado por GilsonDeElt em 21/01/2007 - 18:44h

Ótimo artigo!

Simples, direto e eficiente.

Valeu!!!

[6] Comentário enviado por lero em 31/01/2007 - 18:17h

Pessoal podem me ajudar?
* 1 * * * /usr/sbin/sarg.daily
* 1 * * 7 /usr/sbin/sarg.weekly
* 1 1 * * /usr/sbin/sarg.monthly
sendo q daily eu acho q configureipra todos os dias a 1hr da manha
weekly eu acho q configurei pra todos os domingo 1hr da manhã
monthly eu acho q configurei pra todo dia 1º 1hr da manhã

Podem me ajudar?

[7] Comentário enviado por balani em 15/06/2007 - 19:29h

Muito bom seu artigo, parabens, simples e completo.

[8] Comentário enviado por mvleandro em 10/08/2007 - 21:54h

Olá, gostei do seu artigo! Aborda de uma forma semelhante a um artigo que também postei no meu blog. Caso se interesse, pode dar uma olhada lá:

http://www.prosadigital.com/linux/agendar-tarefas-com-o-cron/

Grande abraço!

[9] Comentário enviado por f_Candido em 27/08/2007 - 16:13h

Muito Bom. Direto e bem didático.
Vlws

[10] Comentário enviado por andrade.br em 24/01/2008 - 10:48h

otimo artigo


[11] Comentário enviado por andrade.br em 24/01/2008 - 10:49h

Sem duvida vai me ajudar batante...coloca mais uns artigos mais complexos do cron vai ser de grande utilidade..,valeusususu cara

[12] Comentário enviado por hendrigo em 25/11/2008 - 10:50h

Acho que há um pequeno erro.
Dia da semana 0-6 (o “0″ é domingo), 1 é segunda, etc.
0 a 7 resulta em 8 dias na semana!
até mais.

[13] Comentário enviado por gcassaniga em 13/03/2009 - 09:00h

RES comentário [12]...

na verdade os dias da semana podem ser definidos com números de 0 a 7 mesmo, sendo que o 0 e o 7 podem ser usados como DOMINGO.

Abraços...

[14] Comentário enviado por wryel em 08/07/2009 - 11:42h

excelente!

fica a minha pequena, duvida, eu peguei um script com * no minuto, o que significa ? deu-se a entender que é a todo minuto o.O [embora eu acredito que não seja haha, mas não tenho tanta certeza assim :P]

[15] Comentário enviado por konqueror em 27/01/2010 - 20:41h

Bom artigo,obrigado e parabéns

[16] Comentário enviado por nandow em 08/02/2011 - 09:42h

Muito bom!
Obrigado!

[17] Comentário enviado por rnduart em 28/04/2011 - 12:06h

Fácil como todo iniciantes como eu gosta.

[18] Comentário enviado por Antonio_Bispo.Jr em 10/06/2011 - 01:01h

Gostei muito do atrigo, mas não conseguitirar minha duvida ainda, se eu tiver que agendar uma tarefa, tipo /bin/acertar_hora no periodo dos dias entre 16/10/2011 ao dia 19/02/2012 como eu faria?

[19] Comentário enviado por jardellameu em 28/05/2014 - 08:29h

Amigo infelizmente o coron não trabalha com o campo ano, mas vc pode executar apartir do dia 10/10 e ele vai parar no dia 19/02

Exemplo:

30 2 * 10-02 1-6 comando

neste caso ele vai executar todos os dias nos meses 10-11-12-01 e 02

[20] Comentário enviado por joorlando3 em 21/07/2014 - 10:40h

Muito Bom!

Simples e prático.

[21] Comentário enviado por demissonsantos em 31/08/2014 - 23:55h

Olá

Eu fiz passo a passo como no artigo porém sem sucesso, descobrir o cron quando fui instalar o DDNS no linux Ubuntu, onde o tutorial pediu para adicionar a seguinte linha no crontab */1 * * * * /usr/local/sbin/ddns.sh, em seguida digitar no terminal o comando crontab -e mas da a seguinte mensagem - demisson@servidor:~$ crontab -e no crontab for demisson - using an empty one
888 daí não sei o que fazer.. podem me ajudar ?

[22] Comentário enviado por biophas em 21/04/2016 - 15:42h

Wester,

Parabéns pela contribuição.

[23] Comentário enviado por Mc.Eagle em 30/09/2016 - 22:19h

Interessante, agora 11 anos depois e continua atual, se fosse em alguma versão da MS talvez já tivesse saído de versão. Isso é linux, maravilhoso.

[24] Comentário enviado por Vsg5662 em 01/04/2018 - 18:18h

2005 ajudando 2018. Vlw bro.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts