segunda-feira, 27 de julho de 2015

Criando e Implementando Tarefas no Linux com Crontabs


O Cron é um serviço que permite que o sistema realize determinadas funções repetitivamente dentro de intervalos de tempo.

Um exemplo: Imagine que você possua uma instância de um banco de dados rodando no seu servidor de produção, e por questões de segurança e Disaster Recovery, a demanda pede que seja executado um backup do banco todos os dias úteis da semana exatamente às 23h00.

Imagine que você gerencie dezenas de servidores. É muito trabalhoso fazer manualmente todos os dias, e o risco de falha humana causada por esquecimento também é grande. A solução é usar o Cron. O cron utiliza uma estrutura de tabelas chamada Crontab para verificar as rotinas, e a cada minuto, o serviço checa essa lista para ver se há novas tarefas para serem executadas.

A estrutura da sintaxe do Cron é bem simples:

[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

Minutos: (0-59),
Horas: (0-23)
Dias: (1-31)
Mês: (1-12)
Dias da Semana: (0-6), onde 0 Indica o domingo
Use o símbolo * para simbolizar todos os valores, como todos os dias da semana, todas as horas, todos os meses e etc.


Você pode acessar a lista de execuções do cron utilizando

# crontab -l

E editar a lista de crontabs com

# crontab -e

Vamos ao exemplo: Como root, vamos executar
# crontab -e

E adicionar estas linhas no final do arquivo

30 12 20 6 * root echo "Nanoshots" >> /home/matheus/linux.txt

Nesta sintaxe programamos o Cron para o usuário root escrever a palavra "Nanoshots" no final do arquivo linux.txt ao 12h30 de todo dia 20 do mês de Junho independente do dia da semana.


Mais um exemplo

0 23 * * 1-5 * root cp /home/matheus/BANCOCLIENTE.FDB /mnt/backups

Neste caso o cron agenda para o usuário root fazer uma cópia do arquivo BANCODOCLIENTE.FDB localizado na pasta /home/matheus/ para a pasta /mnt/backups/ as 23h00 todos os dias do mês e dentro de todos os meses do ano toda segunda, terça, quarta, quinta e sexta

Útil, não? O Cron também pode ser utilizado para fazer a atualização dos patches dos servidores fora do horário de serviço, backups de bancos de dados, cópias dos arquivos de logs do sistema, sincronizações, execução de scripts, backups de file servers e etc.

Exemplo: Precisamos realizar o backup de um servidor de arquivos toda sexta feita às 19h00, mas antes precisamos limpar o HD de Backup para efetuarmos o novo. Então...

#CRON DE BACKUP DE FILE SERVER
0 18 * * 5 root rm -r /mnt/hdbackup/backup.tar.gz
0 19 * * 5 root tar cvfz /mnt/hdbackup/backup.tar.gz /mnt/fileserver/

Neste exemplo começamos o processo de backup às 18h00 de toda sexta feira, porque é necessário apagar o arquivo de backup anterior. Então criamos um cron para excluir o da semana passada, e uma hora depois executar o novo processo de compactação e backup

Basta adaptar sua necessidade.

:)

SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

3 comentários:

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com