O agendamento de tarefas é uma parte essencial da administração de sistemas no Linux. Ele permite que você automatize tarefas repetitivas, execute scripts em horários específicos e gerencie a manutenção do sistema de forma eficiente. Nesta aula, exploraremos duas ferramentas principais de agendamento: cron
e at
.
Agendamento de Tarefas com cron
O cron
é uma ferramenta de agendamento poderosa e flexível, usada para executar tarefas em intervalos regulares (minutos, horas, dias, semanas, meses). O cron
utiliza arquivos de configuração chamados “crontabs” para definir as tarefas agendadas.
Estrutura do Crontab
A estrutura básica de uma linha no arquivo crontab é composta por cinco campos seguidos pelo comando a ser executado:
* * * * * comando
| | | | |
| | | | +-- Dia da semana (0-7) (Domingo é 0 ou 7)
| | | +---- Mês (1-12)
| | +------ Dia do mês (1-31)
| +-------- Hora (0-23)
+---------- Minuto (0-59)
Gerenciando o Crontab
Para editar o crontab do usuário atual, use o comando:
$ crontab -e
Isso abrirá o editor de texto padrão para editar o arquivo crontab. Aqui estão alguns exemplos de entradas no crontab:
- Executar um script todos os dias às 2:30 AM:
30 2 * * * /caminho/para/script.sh
- Executar um comando a cada 5 minutos:
*/5 * * * * /caminho/para/comando
- Executar um script todas as segundas-feiras às 7:00 AM:
0 7 * * 1 /caminho/para/script.sh
Visualizando Tarefas Agendadas
Para visualizar as tarefas agendadas no crontab do usuário atual, use:
$ crontab -l
Para visualizar o crontab de outro usuário (requer privilégios de root):
$ sudo crontab -u nome_do_usuario -l
Removendo Tarefas Agendadas
Para remover todas as tarefas agendadas no crontab do usuário atual:
$ crontab -r
Para remover o crontab de outro usuário:
$ sudo crontab -u nome_do_usuario -r
Agendamento de Tarefas com at
O at
é usado para agendar uma tarefa para ser executada uma vez, em um horário específico no futuro. É útil para tarefas que precisam ser executadas apenas uma vez.
Estrutura Básica do Comando at
Para agendar uma tarefa, use o comando at
seguido pelo horário desejado:
$ at 14:30
Isso abrirá um prompt at
onde você pode digitar o comando a ser executado. Depois de digitar o comando, pressione Ctrl + D
para finalizar a entrada.
Exemplo de Uso do at
- Agendar um script para ser executado às 3:00 PM:
$ at 15:00
at> /caminho/para/script.sh
at> <Ctrl + D>
- Agendar um comando para ser executado em 2 horas a partir de agora:
$ at now + 2 hours
at> /caminho/para/comando
at> <Ctrl + D>
Visualizando Tarefas Agendadas com at
Para listar todas as tarefas agendadas com at
, use o comando:
$ atq
Cancelando Tarefas Agendadas com at
Para cancelar uma tarefa agendada, use o comando atrm
seguido pelo número do trabalho listado no atq
:
$ atrm 1
Gerenciamento de Logs e Erros
Ao agendar tarefas, é importante redirecionar a saída e os erros para logs, para que você possa monitorar o desempenho das tarefas e solucionar problemas se necessário.
Redirecionamento de Saída e Erros
Você pode redirecionar a saída padrão (stdout) e a saída de erro (stderr) para arquivos de log:
30 2 * * * /caminho/para/script.sh > /caminho/para/logs/script.log 2>&1
Neste exemplo, a saída e os erros do script serão redirecionados para script.log
.
Práticas Recomendadas
- Testar scripts manualmente: Antes de agendar scripts com
cron
ouat
, execute-os manualmente para garantir que funcionam conforme esperado. - Usar caminhos absolutos: No crontab, sempre use caminhos absolutos para comandos e scripts para evitar problemas relacionados ao ambiente do
cron
. - Documentar tarefas agendadas: Mantenha um registro das tarefas agendadas e seus propósitos, facilitando a manutenção e a resolução de problemas.
Exemplos Práticos
Exemplo 1: Backup Diário de Arquivos
Suponha que você queira agendar um script de backup para ser executado diariamente às 3:00 AM. Primeiro, crie o script de backup:
#!/bin/bash
tar -czf /backup/arquivos_$(date +\%F).tar.gz /diretorio/origem
Torne o script executável:
$ chmod +x /caminho/para/backup.sh
Agende a tarefa no crontab:
$ crontab -e
30 3 * * * /caminho/para/backup.sh > /caminho/para/logs/backup.log 2>&1
Exemplo 2: Limpeza Semanal de Logs
Para agendar um script que limpa logs antigos todas as segundas-feiras às 4:00 AM:
Crie o script de limpeza:
#!/bin/bash
find /caminho/para/logs/ -type f -name "*.log" -mtime +7 -exec rm {} \;
Torne o script executável:
$ chmod +x /caminho/para/limpeza_logs.sh
Agende a tarefa no crontab:
$ crontab -e
0 4 * * 1 /caminho/para/limpeza_logs.sh > /caminho/para/logs/limpeza_logs.log 2>&1
O agendamento de tarefas com cron
e at
é uma habilidade vital para a administração de sistemas Linux. Essas ferramentas permitem automatizar tarefas repetitivas e garantir que tarefas críticas sejam executadas em horários específicos. Pratique o uso de cron
e at
para dominar o agendamento de tarefas e otimizar a administração do seu sistema.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.