anúncios

terça-feira, 5 de agosto de 2014

Agendando tarefas no Linux

Supondo que você administra serviços de manutenção do sistema e executa manualmente scripts todos os dias e horários, e você pretende automatizar esse processo para executar determinado serviço e/ou script no dia e horário agendado, então, felizmente no Linux é possível por meio do crontab, que permite a realização de tarefas programadas em dias e horários determinados.

O crontab é muito utilizado por sysadmins e até programadores que usam Linux.
O objetivo deste post é explicar como fazer agendamento de tarefas por meio do cron/crontab.

O que é cron?

O cron é um serviço do Linux que é carregado no boot do sistema. Basicamente uma ferramenta que permite agendar tarefas de maneira automatizada.

Como usar o cron?
No terminal, digite: crontab -e.
Por default o crontab é aberto no editor vi, mas pode abrir no editor de sua preferência, da seguinte forma: env EDITOR= crontab -e, onde coloca o nome do editor que deseja abrir o crontab.
Para sair do editor crontab é o mesmo do editor que utilizou para abrir-lo.
O crontab tem o seguinte formato:
[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]
O preenchimento de cada campo é feito da seguinte maneira:
- Minutos: informe números de 0 a 59;
- Horas: informe números de 0 a 23;
- Dias do mês: informe números de 0 a 31;
- Mês: informe números de 1 a 12;
- Dias da semana: informe números de 0 a 7;
- Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se o arquivo do próprio usuário for usado);
- Comando: a tarefa que deve ser executada.

Comandos do crontab
Para acessar o crontab, basta digitar esse nome em um terminal seguido de um parâmetro. Eis a lista de parâmetros disponíveis:
crontab -e: para editar o arquivo atual do crontab e criar um, caso não exista;
crontab -l: para mostrar o conteúdo atual do crontab;
crontab -r: para remover o arquivo atual do crontab.

Vamos para prática e ver funcionando.
O famoso Hello World de todo programador que inicia uma linguagem de programação.
$crontab -e 1,10,20 * * * * echo "Hello World executou no crontab!"
O comando acima será executado nos minutos 1, 10 e 20 o conteúdo do echo.
P.S O resultado do comando acima será exibido em /var/mail/usuario.
cat /var/mail/usuario. Troque usuario pelo seu usuário do sistema.
Esse é clássico, quero limpar todo conteúdo do diretório /tmp todo mês do dia 30 às 5:30.
30 5 30 * * rm -rf /tmp/*
Também pode ser aplicado para limpar o diretório público da rede, onde os usuários armazenam arquivos temporários. Nesse caso seria limpar todos os dias de madrugada.
$crontab -e
30 5 * * * rm -rf \mnt\serveraquivos\temp*
P.S o mapeamento de rede nomeado servidor arquivos deve estar no /etc/fstab e devidamente montado.
Liberar o proxy geral 12:00 todos os dias
$crontab -e
0 12 * * * /etc/init.d/rc.squid.sh stop

Ativar o proxy às 14:00 todos os dias
$crontab -e
0 14 * * * /etc/init.d/rc.squid.sh start

Considerações finais

Espero que nesse post foi possível fazer entender como utilizar o crontab para agendar tarefas de serviços serem executadas de forma automatizadas no Linux.
O crontab não se limita apenas nos exemplos mostrados aqui, existem muitas outras tarefas que podem ser utilizadas no agendamento, deixo a cargo do leitor essa tarefa, tendo dúvidas, pode perguntar nos comentários.
Feito!

Nenhum comentário:

Postar um comentário