Atividade Prática - Agendamento de tarefas no Linux

Regras

  • A atividade será inteiramente prática.
  • Deverá ser feita em dupla.
  • Poderá ser consultado qualquer tipo de material.
  • Só não poderá haver consulta entre as duplas.

Execução da Prática


Contexto da prática

Você foi contratado como técnico de laboratório por uma instituição de ensino para realizar a manutenção das máquinas de todos os laboratórios de informática. Essa instituição oferta cursos nas áreas de Web Design, Segurança da Informação e Redes de Computadores. Os laboratórios são equipados com máquinas com o Ubuntu instalado como Sistema Operacional.

O professor da disciplina de Redes de Computadores solicitou a configuração das máquinas do laboratório, para que periodicamente seja executada uma rotina de atualização dos pacotes e backup da pasta /home, de modos que a máquina sempre tenha as versões mais recentes dos principais pacotes instalados e possa ter a pasta /home restaurada, em caso de remoção de arquivos dos alunos. A atualização dos pacotes deve ocorrer no primeiro dia útil da semana, segunda-feira, as 08h da manhã; e o backup todos os dias, de 6 em 6 horas.

Com intituito de atender a solicitação do professor, você realizou uma pesquisa por soluções que permitissem o agendamento de tarefas no Linux. Você constatou que o Linux, por padrão, já possui uma solução que permite esse agendamento, chamada Cron. Seria preciso apenas construir o Shell Script para realizar as rotinas e colocar eles para rodar no Cron.

Para realizar essa tarefa, você contará com a ajuda de outro técnico de laboratório. Antes de realizar os procedimentos nas máquinas reais, vocês devem utilizar máquins virtuais com o Ubuntu, de modos a validar todo o processo de configuração da solução. As máquinas deverão ser configuradas via DHCP da rede do IFB, visto que não existe a necessidade de uma configuração de rede especifica.

As tabelas abaixo contém o resumo do contexto e a característica das máquinas:

Rotina Periodicidade
Backup da pasta /home Todos os dias, 6 em 6 horas
Atualização dos pacotes 08h da manhã de toda segunda-feira
Máquina Disco Memória
Máquina Teste 01 8 GB 512 MB
Máquina Teste 02 8 GB 512 MB

Instalação da máquina virtual

Todas as máquinas virtuais utilizadas pela dupla poderão ser instaladas com o sistema operacional Ubuntu, utilizando qualquer esquema de particionamento. Caso ache melhor, a dupla poderá utilizar o Ubuntu no modo de teste.

Código do Shell Script

Para facilitar a manutenção e deixar a solução mais elegante, será utilizado um Shell Script para cada uma das rotinas solicitadas pelo professor. O código de cada um dos scripts foi disponibilizado pelo próprio professor.

Backup pasta /home

#!/bin/bash
 
#Rotina para realizar o Backup da Pasta /home
#Nome Arquivo: /root/script-backup-home.sh
#Será salvo um arquivo de log na pasta /root
#O Backup será salvo na pasta /var/backups
#O Script deverá ser executado pelo usuário root
 
DATA=`date +%Y-%m-%d-%H.%M`
 
echo "Inicio do Log - $DATA" >> /root/backup-home.log
 
tar -cvzf /var/backups/"$DATA"-backup-home.tar.gz /home/* >> /root/backup-home.log
 
echo "Fim do Log - $DATA" >> /root/backup-home.log

Atualização dos Pacotes

#!/bin/bash
 
#Rotina para realizar a Atualização dos Pacotes
#Nome Arquivo: /root/script-atualizacao-pacotes.sh
#Será salvo um arquivo de log na pasta /root
#O Script deverá ser executado pelo usuário root
 
DATA=`date +%Y-%m-%d-%H.%M`
 
echo "Inicio do Log - $DATA" >> /root/atualizacao-pacotes.log
 
apt-get update >> /root/atualizacao-pacotes.log
 
apt-get upgrade -y >> /root/atualizacao-pacotes.log
 
echo "Fim do Log - $DATA" >> /root/atualizacao-pacotes.log

Agendamento das Rotinas

O primeiro passo para realizar o agendamento das rotinas é salvar os Shell Script em arquivos, com o nome sugerido no próprio código do script. Em seguida é preciso dar permissão de execução para cada um dos arquivos, utilizando o comando abaixo:

# chmod +x nome_script

Antes de configurar o Cron, teste os scripts, executando eles diretamente no terminal:

# ./nome_script

Como ambos os scripts devem ser executados com o usuário root, a configuração do Cron deve ser feita editando o arquivo abaixo:

/etc/crontab

Coloque uma nova linha, antes da linha #, para cada um dos scripts. A linha abaixo é um exemplo e deve ser alterada de acordo com a data e hora que o script deve ser executado, bem como de acordo com o caminho do script.

* *   * * *   root   caminho_script  
ensino/semestres/2012.1/mcs/aulas/roteiro-agendamento-tarefas/inicio.txt · Última modificação: 2012/06/26 11:58 (edição externa)