Pular para o conteúdo

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.
Emerson Alecrim wester
Hits: 606.492 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar

Introdução

Suponha que você seja dono de um serviço de hospedagem de sites e diariamente precisa disponibilizar, numa pasta acessível por FTP, o arquivo de log de acessos de um cliente. É trabalhoso fazer isso manualmente e na pior das hipóteses, você pode esquecer. Felizmente o Linux conta com o serviço cron, que permite a realização de tarefas periodicamente e em dias e datas determinados por você. O objetivo deste artigo é mostrar como fazer isso.

O que é cron


O cron pode ser interpretado como um serviço do Linux que é carregado durante o processo de boot do sistema. Trata-se de uma ferramenta que permite programar a execução de comandos e processos de maneira repetitiva ou apenas uma única vez.

No caso citado da introdução, você poderia usar o cron para que o arquivo de log do cliente fosse disponibilizado todos os dias às 12 horas, por exemplo. Isso é possível porque o daemon (uma espécie de programa que executa tarefas em segundo plano) do cron executa os comandos nas datas e horários especificados. A cada minuto o cron é acionado para verificar se há tarefas a serem realizadas.

Para executar as tarefas, o cron usa uma espécie de tabela conhecida como crontab. O arquivo crontab geralmente fica localizado no diretório /etc, mas também pode estar em um diretório que cria um crontab para cada usuário do sistema, geralmente em /var/spool/cron/.

   1. Introdução
   2. Como usar o cron

Processos no Linux

O gerenciador de boot GRUB

Máquina Virtual Java (Java Virtual Machine)

Tem Facebook? Então tem Joli OS

Conhecendo os programas do Linux

Instalando o Kurumin 7 e outros em um pendrive

Linux para máquinas antigas - Que distribuição escolher?

Mamãe, quero descompactar e também compactar arquivos no terminal!

#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.
#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

Entre na sua conta para comentar.