br-linux

Artigos br-linux.org
Artigos sobre Linux em bom português, originais e com qualidade

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Agendamento de tarefas com o cron e as crontabs
Publicado em 10 de janeiro de 2004
 

Esta é uma reedição do artigo de Marcelo Araujo (msaraujo@tro.matrix.com.br) que publiquei originalmente em 1999, explicando como usar os recursos do cron para agendar a execução futura ou periódica de comandos no Linux.

Agendamento de tarefas com o cron e as crontabs

Marcelo Araujo (msaraujo@tro.matrix.com.br)

Esta é uma republicação do artigo publicado originalmente em 1999 aqui no br-linux.org

cron e crontab

O cron é um recurso padrão do Unix (e do Linux) que permite o agendamento de tarefas para serem executadas em um momento específico, ou em intervalos regulares. Por exemplo, você pode programar as tabelas do cron (as chamadas 'crontabs') para:

- checar a integridade dos sistemas de arquivo todos os dias as 5:00 AM e mandar mail do resultado para o root;
- verificar se há mail em suas contas pop a cada 15 minutos
- rodar o updatedb todos os dias às 00:30
- todas as quintas-feiras, às 3:00 AM, procurar por arquivos core desnecessários e excluí-los
- e muito mais

A administração do cron para usuários pode envolver alguns cuidados adicionais, que uma boa leitura na documentação do seu sistema. Mas o leitor Marcelo Araujo (msaraujo@tro.matrix.com.br) resolveu facilitar a nossa vida, enviando algumas dicas sobre a inclusão de tarefas nas tabelas do cron. A base do texto a seguir é do Marcelo, com complementos aqui e ali.

Entendendo o crontab


Veja este exemplo de linha do crontab:


0,15,30,45 * * * * /bin/netstat -a | /bin/mail root

Essa linha de comando ira fazer que a cada 15 minutos, o netstat -a seja executado e o resultado do mesmo vá para o mail root.

O formato da linha de definição de tarefa do cron é:


minuto hora dia-do-mês mês dia-semana comando

Agora, como fazer para editar as suas crontabs? É simples... Em primeiro lugar decida qual editor de texto que você quer usar. Eu prefiro o pico com a opção -w (para evitar wordwraps). Portanto, terei que usar o
comando export EDITOR="pico -w"


Para entrar no modo de edição da crontab, após selecionar o editor de texto, basta digitar crontab -e e editar linhas como as do exemplo:


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
0,15,30,45 * * * * /bin/netstat -a | /bin/mail root
15 21 * * * /usr/bin/updatedb
# isto é um comentário

As três primeiras linhas definem a shell que vai ser usada pelos scripts, o path de procura de comandos, e o usuário que vai receber mails em caso de erros. A quarta linha define que aos 0, 15, 30 e 45 minutos de todas as horas, em todos os dias do mês, todos os meses e todos os dias da semana, vai ser executado o comando /bin/netstat -a | /bin/mail root. A quinta linha define que às 21:15 de todos os dias será executado o /usr/bin/updatedb.

Você pode adicionar e remover entradas no cron à vontade. Linhas quebcomeçarem com um sinal de "#" não são consideradas, e você pode usá-las para desativar temporariamente comandos, ou para acrescentar comentários.

Para listar o conteúdo de sua crontab, use crontab -l. Para removê-la completamente, use crontab -u. Para maiores informações sobre o cron, use man 8 cron, man 1 crontab e man 5 crontab

Postado por brain em janeiro 10, 2004 10:35 PM


Comentários para "Agendamento de tarefas com o cron e as crontabs"

» Postado por: Leonardo França em janeiro 27, 2004 11:55 AM, 200.193.224:

    Ola,
    Artigo muito interessante!!!
    você poderia dar um exemplo de como seria a configuração do cron para acessar uma pagina em PHP todo dia por exemplo.
    Essa página faria a verificação no banco de dados e mandaria uma mensagem de parabens para quem fizesse aniversario no dia

    Até mais
    Leonardo França
    leo@osfederais.com

 

» Postado por: Gustavo Fiod em janeiro 29, 2004 07:28 PM, 200.153.74.:

    Obrigado,
    Esta dica me salvou.
    Eu estava em um cliente, deu um branco, eu não lembrava o que significava os asteriscos da crontab. Passei o maior sufoco, até que encontrei este artigo claro, objetivo e valioso.
    Quem dera todos os manuais de linux fossem assim.

 

» Postado por: Claudio Marcelo em fevereiro 11, 2004 02:13 PM, 200.199.111:

    Muito esclarecedor este texto. Porém, como eu poderiacopiar um arquivo X para uma pasta chamada SEG, for Segunda-feira, e assim consecutivamente.
    Agradeço desde já!

 

» Postado por: Biry_Night em julho 2, 2004 01:05 AM, 200.101.62.:

    legal este assunto .. teria como eu fazer alguma coisa no con para ele executar um arquivo apenas uma vez ou todas as vezes q o pc ele for reiniciado ?? digamos ... um servidor de jogos online ... vc executa o comando o jogo ta no ar ... só para c der um stop no comando ou reiniciar o pc ... mas ai o cron entra em açao e inicia o servidor de jogo assim q o pc for iniciado ... teria como ??

 

» Postado por: VeloxDJ em julho 5, 2004 06:19 PM, 200.146.150:

    Parabens, muito esclarecedor e aproveitei e ja adicionei aos favoritos. Abraços e valeu pela força.

 

» Postado por: Wedrey em julho 9, 2004 11:26 AM, 200.140.63.:

    Gostei..
    mas como que faço pra executar uma página PHP todos os dias?

    Até mais
    Wedrey Nunes


 

» Postado por: Marcelo Araujo em agosto 1, 2004 05:43 PM, 200.215.99.:

    Ola pessoal, fico contente que tenham gostado do tutorial ... estou preparando um novo ... para o SGDB Postgresql ....

 

» Postado por: Marcus Vinicius em agosto 3, 2004 10:48 AM, 201.6.112.7:

    Achei muito bom o texto, clariou muito minhas ideias!!!

 

» Postado por: Gustavo em setembro 23, 2004 07:03 PM, 200.192.140:

    Nunca testei, mas acho que para executar uma página em PHP todos os dias num determinado horário voce poderia usar o wget ou um browser por linha de comando tipo lynx

    dai basta executar o wget ou o lynx passando como parametro a página PHP e o site. Mesmo que esteja na propria máquina acho melhor colocar o endereco completo do site.

    Exemplo

    1 * * * * lynx -dump http://www.pagina.com.br/script.php

    ou então a mesma coisa usando wget

    1 * * * * wget -dump http://www.pagina.com.br/script.php

    a diferenca é que o wget grava o resultado do que seria visto na página num arquivo e o lynx joga na tela.

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)

Envie seu comentário









Lembrar as informações pessoais?


Atenção: Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum, onde mais pessoas estarão disponíveis para respondê-lo..






Nota: os comentários pertencem a seus respectivos autores e são de responsabilidade de quem os postou. O restante desta nota está disponível sob a licença GNU FDL, exceto se explicitamente declarado em contrário.