MENU
Wallpappers
Humor
Icones
Hardware
Ouvi Dizer...
LINKS UTEIS
DICAS CURTAS

Identificar hardware no Linux

MPlayer: Ler imagem iso de um DVD

O comando shutdown : Desligue, programe, e faça muito mais ...!

Ktimer o temporizador do KDE e não só

Verificação da integridade de arquivos e imagens iso

Backup da MBR

Como instalar fontes Truetype no Linux «Ubuntu »

Agendar tarefas com CRON

COISAS... INTERESSANTES!

A Internet torna as pessoas inteligentes?

Nomes cientificos de alguns dos sistemas operacionais existentes

Fantastic Music

Blogs a mais conteudo a menos..

Ouvi dizer! ... que os numeros nasceram assim...

Agendar tarefas com o CRON

Tipo: Dica    02-01-2009
Por: Carlos E. Morimoto
para o Guia do Hardware       Fonte aqui!

 Pagina 1 de 2

 

Por vezes necessitamos agendar uma tarefa, mas necessitamos que ela se execute automaticamente sem a nossa interveção, pois bem! o cron é a aplicação que procura. Do Clube do Hardware para sí, aí está a dica com a assinatura desse senhor que se chama Carlos E. Morimoto.

O agendamento de tarefas é um recurso essencial em servidores. No Linux, o daemon responsável pela tarefa é o cron. Ele é o responsável por diversas funções executadas automaticamente na maioria das distribuições, tais como o rotacionamento dos logs e pode ser programado para executar operações diversas, tais como scripts de backup.

O arquivo principal de configuração é o "/etc/crontab" e o script responsável pelo serviço é o "/etc/init.d/cron" (ou "/etc/init.d/crond" no Fedora e no CentOS). A configuração do cron pode parecer indigesta à primeira vista, mas na verdade ela é bastante lógica e, dependendo do ponto de vista, até mesmo simples.

Você pode criar um agendamento simples adicionando a linha abaixo no final do arquivo:

* * * * * root date >> /tmp/testedata

Ela faz com que o sistema execute o comando "date >> /tmp/testedata" uma vez a cada minuto. O comando "date" mostra o horário atual do sistema e as duas setas direcionam a saída do comando para o arquivo especificado.

Depois de salvar o arquivo, você precisa apenas esperar um minuto ou dois e verificar o conteúdo do arquivo para checar se o agendamento está funcionando. Ele conterá várias linhas com a saída do comando, como em:

Qui Jun 19 04:36:38 BRT 2008
Qui Jun 19 04:36:39 BRT 2008

O cron checa o conteúdo do arquivo uma vez a cada minuto, de forma que não é necessário reiniciar o serviço para que a alteração entre em vigor. Para desativar o agendamento, basta remover ou comentar a linha.

Os cinco campos separados por espaço no início da linha permitem definir o horário ou a periodicidade em que uma determinada tarefa será executada. O primeiro campo especifica os minutos, o segundo especifica as horas, o terceiro especifica o dia, o quarto o mês e o quinto especifica o dia da semana. A princípio essa designação parece muito confusa, mas na verdade ela é bastante prática.

Para que o comando fosse executado todos os dias às 6:20 da manhã, usaríamos:

20 06 * * * root date >> /tmp/testedata

Os dois campos especificam a hora, como você pode ver. Os outros três (dia, mês e dia da semana) permanecem com o asterisco, o que faz com que o comando seja executado todos os dias. Se a idéia fosse fazer com que ele fosse executado nessa mesma hora, mas apenas aos domingos (imagine o caso de um script de backup que precisasse desativar temporariamente o banco de dados, deixando o servidor fora do ar, por exemplo), você usaria:

20 06 * * 0 root /usr/local/bin/script-de-backup

Veja que agora usamos o número 0 no último campo, que indica o dia da semana. Na sintaxe do cron, os dias da semana são numerados de 0 a 6, onde o "0" representa o domingo e o "6" o sábado.

É possível também especificar mais de um valor em um mesmo campo, fazendo com que o script seja executado duas vezes por dia, ou duas vezes por semana, sem precisar incluir duas linhas diferentes. Se deseja que um script seja executado tanto aos domingos quanto às quartas-feiras, sempre às 4:00 da manhã, você usaria:

00 04 * * 0,3 root /usr/local/bin/script-de-backup

A vírgula no campo do dia da semana permite especificar mais de um valor, ela é interpretada pelo cron como um "e", de forma que "0,3" é lido como "aos domingos e às quartas feiras".

É possível também usar a "/" para indicar um período. Para fazer com que o script seja executado a cada 5 minutos, você usaria:

*/5 * * * * root /usr/local/bin/verificar-servidor

O mesmo pode ser feito para os demais campos. Para que o script fosse executado a cada 3 horas (1:15, 4:15, 7:15, etc.), por exemplo, você usaria:

15 */3 * * * root /usr/local/bin/verificar-servidor

Continuando, temos os campos com o dia e o mês. Para executar um script às 6:20 da manhã, no primeiro dia de cada mês, você usaria:

00 06 1 * * root /usr/local/bin/gerar-folha-de-pagamento

Para executar apenas no dia primeiro de janeiro, uma vez por ano, usaria:

00 06 1 * * root /usr/local/bin/feliz-ano-novo

O cron executa a tarefa apenas se todas as condições especificados nos campos sejam satisfeitas. Isso permite especificar condições bastante específicas. Para executar um comando às 00:15 toda vez que uma sexta feira cair no dia 13 (imagine que você seja supersticioso e queira fazer um backup extra, por exemplo :), você usaria:

15 00 13 * 5 root /usr/local/bin/backup-extra

Naturalmente, você pode também fazer com que os scripts sejam executados usando outros logins de usuário em vez do root, o que é o ideal do ponto de vista da segurança. Para isso, basta substituir o "root" pelo login desejado. Com isso, o script é executado dentro das permissões do usuário, o que limita qualquer possível dano ou brecha de segurança que possa ser aberta pelo script.

Em quase todas as distribuições atuais, o arquivo "/etc/crontab" vem pré-configurado para que o sistema execute os scripts incluídos nas pastas "/etc/cron.hourly", "/etc/cron.daily", "/etc/cron.weekly" e "/etc/cron.monthly", executados, respectivamente, uma vez a cada hora, dia, semana e mês:

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Esta configuração facilita o agendamento de tarefas, já que para fazer com que um script seja executado todos os dias, por exemplo, você precisa apenas colocá-lo dentro da pasta "/etc/cron.daily". Olhando o conteúdo da pasta, você notará a presença de diversos scripts de manutenção do sistema, como o logrotate, encarregado de rotacionar e compactar os arquivos de log, evitando que eles cresçam indefinidamente.

Os scripts incluídos na programação do cron são arquivos de texto simples, contendo os comandos que você deseja que sejam executados. Aqui temos um exemplo de script simples de backup, que usa o rsync para salvar uma cópia do conteúdo da partição "/var/www" na pasta "/mnt/sdb1", que corresponderia a um HD separado, salvando a saída do comando, em um arquivo de texto, que você pode examinar posteriormente em busca de erros:

#! /bin/sh
/usr/bin/rsync -av --delete /var/www/ /mnt/sdb1 >> /var/log/backup-www.log

Para que o script fosse executado todos os dias, você precisaria apenas copiá-lo para a pasta "/etc/cron.daily" e marcar a permissão de execução (chmod +x). Outra opção seria simplesmente adicionar uma nova linha no arquivo "/etc/crontab", especificando a hora em que você deseja que ele seja executado.

 

Até á proxima.


ULTIMAS DICAS

Pesquisa no linux com Recooll

Configurar IP fixo no Ubuntu

MySQL - Alterar senha de root no Ubuntu

Crontab rápido e fácil.

K3b: O plugin Mp3 Audio Decoder não foi encontrado

Acedendo a Partições linux a partir do Windows


ULTIMOS ARTIGOS

Escolher uma distro pode ser mais difícil do que se pensa!

Aos que estão a começar...

Particionamento de Discos


MANUAIS

Super manual de comandos linux

Debian: O Sistema Operacional Universal

Aspectos Gerais sobre Linux

Windows no Linux: VirtualBox, VMware e Wine

Manual sobre as portas mais comuns do PC

Manual Instalação Centos 5

Manual Instalação Centos 5.2 e Red Hat 5.2

Ubuntu Guia do Iniciante

Fedora Installation and Quick Star

Manual Virtual Box

Manual do Samba

urpmi Mini Howto

Servidor Web Apache

Servidor de ftp VSFTP

Backups com RSync

Tutorial phpMyAdmin

NX Server System Administrator's Guide

NVU User Guide

ClamAV User Manual

Manual completo HTML

Linux Dicas e Truques