Agendando tarefas e rotinas com o Cron

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 https://www.hardware.com.br/artigos/scripts-backup/

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

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X