ct

    Agendando tarefas e rotinas com o Cron

    Dicas do Guia do Hardware

    O cron é um serviço disponível no Linux e outros sistemas UNIX. Com ele é possível agendarmos rotinas ou tarefas (como scripts de backup ou para rotacionar logs, por exemplo), de modo que o sistema execute-as periodicamente. Aprenda como configurá-lo.Marcos Vinicius M. da Silva Junior (marcos.cortez@gmail.com)
    17/09/2006


    O cron é um serviço disponível no Linux e outros sistemas UNIX (HP-UX, AIX, Solaris, Linux, etc). Com ele é possível agendarmos rotinas ou tarefas, de modo que o sistema execute-as periodicamente.

    No nosso primeiro exemplo, utilizaremos o crontab para agendarmos uma tarefa a ser executada pelo cron. Nele especificamos os comandos, além do horário e data que desejamos que seja executado pelo cron no período definido.

    Apenas para exemplo, vamos criar este script antes:

    # kedit /usr/local/bin/backup.sh

    Adicione as linhas abaixo dentro do arquivo de texto:

    #!/bin/bash
    #fazendo backup do /etc

    DATA=`date +%Y-%m-%d-%H.%M`
    cd /root
    tar -cvzf backup-"$DATA".tar.gz /etc


    Transforme-o em executável:

    # chmod +x /usr/local/bin/backup.sh

    Este script fará backup do diretório /etc no diretório do root /root, e para evitar que um backup sobrescreva o outro ou que tenhamos de ficar renomeando os arquivos a cada backup, este script gera o arquivo de backup já com data e horário incluídos em seu nome, como em:

    /home/root/backup-2006-09-17-11.44.tar.gz

    Onde:

    2006:ano
    09:mês
    17:dia
    11:horas
    44:minutos

    Nota: você pode consultar mais opções para scripts de backup em http://www.guiadohardware.net/artigos/323/

    Agora precisamos configurar o crontab para executa-lo periodicamente, assim não precisaremos mais lembrar de fazer backup, pois o sistema se encarregará de lembrar por nós ;-)

    Editando o crontab:

    # crontab -e

    Feito. Precisamos agora adicionar o período (tempo) que o cron deve chamar o nosso script de backup.

    A sintaxe do crontab é bastante fácil de se trabalhar. A sintaxe para chamar nosso script deve ficar assim:

    mm HH DD MM DS /usr/local/bin/backup.sh

    Onde:

    mm: minutos
    HH: horas
    DD: dia
    MM: mês
    DS: dia da semana
    /usr/local/bin/backup.sh: tarefa a ser realizada

    Neste exemplo, faríamos com que o script seja executado todos os dias as 22hrs. Veja:

    00 22 * * * /usr/local/bin/backup.sh

    Pronto. Salve o arquivo, e reinicie o cron para que a rotina funcione:

    # /etc/init.d/cron restart

    Para visualizar os agendamentos feitos (por usuário), use:

    # contab -l

    Se desejar apagar os agendamentos, digite o comando:

    # crontab -r

    Existe ainda uma outra maneira de montarmos os agendamentos com o cron. Através dos comandos do crontab, como no exemplo citado acima, os agendamentos são criados apenas para o usuário corrente, ou seja, o usuário que esta digitando o comando. Editando diretamente o arquivo de configuração do crontab, um novo campo é adicionado a sintaxe. Este campo, é o campo usuário. Ele é adicionado para que possamos determinar usuários para cada tarefa ou rotina a ser realizada.

    # kedit /etc/crontab

    A nova sintaxe ficará assim agora:

    mm HH DD MM DS U /usr/local/bin/backup.sh

    Onde:

    mm: minutos
    HH: horas
    DD: dia
    MM: mês
    DS: dia da semana
    U: nome do usuário especificado
    /usr/local/bin/backup.sh: tarefa a ser realizada

    Para finalizar, dentro do diretório /etc, existe temos quatro agendamentos pré-definidos:

    cron.hourly, cron.daily, cron.weekly e cron.montly.

    Onde:

    cron.hourly: de hora em hora
    cron.daily: de dia em dia
    cron.weekly: de semana em semana
    cron.montly: de mês em mês

    Exemplo: Para que nosso script de backup seja executado diariamente, basta copiarmos o script para /etc/cron.daily

    # cp /usr/local/bin/backup.sh /etc/cron/daily

    Para finalizar, após copiar o script para o diretório desejado, é necessário reiniciar o daemon do cron, para que as alterações entrem em vigor.

    # /etc/init.d/cron restart

    Você pode verificar mais opções consultando o manual do cron. Boa sorte ;-)

    # man cron

     



    » Gostou do texto? Veja nossos livros impressos

    ... ou use a busca para localizar outros artigos relacionados:

cb
Livros de Carlos E. Morimoto HOME