Tarefas agendadas, ou cron jobs, são processos que executam automaticamente em segundo plano no sistema Linux. Um cron job é um utilitário que permite definir comandos ou scripts para execução em horários específicos, automatizando tarefas repetitivas em qualquer servidor VPS.
Com cron jobs você pode automatizar backups, limpeza de cache, envio de emails, exclusão de arquivos temporários, execução de scripts de manutenção e muito mais. Administradores de sistema utilizam esta ferramenta para manter servidores funcionando de forma eficiente sem intervenção manual.
Instalação do Cron no Linux
Na maioria das distribuições Linux modernas, o cron já vem instalado por padrão. Para verificar se está ativo no seu sistema Debian/Ubuntu, execute:
sudo systemctl status cron
Caso não esteja instalado, instale com o comando:
sudo apt update
sudo apt install cron
Para iniciar e habilitar o serviço:
sudo systemctl start cron
sudo systemctl enable cron
Como Editar o Crontab
Existem duas formas principais de gerenciar cron jobs: editando o crontab do usuário ou o arquivo sistema. Para editar o crontab do usuário atual:
crontab -e
Para visualizar os cron jobs ativos:
crontab -l
Para editar o arquivo de sistema (requer privilégios root):
sudo nano /etc/crontab
O arquivo sistema contém configurações globais e variáveis de ambiente:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Exemplo de tarefas do sistema
17 root cd / && run-parts --report /etc/cron.hourly
25 6 * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Sintaxe do Crontab
A sintaxe básica de um cron job segue este formato:
minuto hora dia_mês mês dia_semana comando
Cada campo aceita os seguintes valores:
| Campo | Valores | Caracteres Especiais |
|---|---|---|
| Minuto | 0-59 | * , - / |
| Hora | 0-23 | * , - / |
| Dia do Mês | 1-31 | * , - / |
| Mês | 1-12 | * , - / |
| Dia da Semana | 0-7 (0 e 7 = domingo) | * , - / |
Caracteres Especiais
- * (asterisco): Todos os valores possíveis
- , (vírgula): Lista de valores (ex: 1,3,5)
- - (hífen): Intervalo de valores (ex: 1-5)
- / (barra): Intervalos de repetição (ex: */5 = a cada 5 unidades)
Exemplos Práticos de Cron Jobs
Backup Diário
Executar backup todos os dias às 2:30 da manhã:
30 2 * /usr/local/bin/backup.sh
Limpeza de Logs
Limpar logs antigos todo domingo às 23:00:
0 23 0 find /var/log -name "*.log" -mtime +7 -delete
Monitoramento de Site
Verificar disponibilidade de um site a cada 15 minutos:
/15 * curl -f https://meusite.com || echo "Site fora do ar" | mail -s "Alerta" admin@exemplo.com
Reinicialização de Serviço
Reiniciar serviço web toda segunda-feira às 4:00:
0 4 1 systemctl restart apache2
Script PHP
Executar script PHP a cada hora:
0 /usr/bin/php /var/www/html/manutencao.php
Gerenciamento de Logs e Saída
Por padrão, cron jobs enviam a saída por email para o usuário. Para redirecionar a saída:
Salvar saída em arquivo
0 2 * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Descartar saída completamente
0 2 * /usr/local/bin/backup.sh > /dev/null 2>&1
Enviar apenas erros para log
0 2 * /usr/local/bin/backup.sh 2>> /var/log/backup-errors.log
Variáveis de Ambiente
Cron jobs executam com ambiente limitado. Defina variáveis necessárias no início do crontab:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=admin@exemplo.com
HOME=/root
0 2 * /usr/local/bin/meu-script.sh
Verificação e Depuração
Para verificar se seus cron jobs estão executando, consulte os logs do sistema:
Verificar logs do cron
sudo tail -f /var/log/cron
No Ubuntu/Debian
sudo tail -f /var/log/syslog | grep cron
Verificar logs específicos
grep CRON /var/log/syslog
Diretórios de Cron Predefinidos
O Linux fornece diretórios para tarefas comuns:
- /etc/cron.hourly/ - Scripts executados a cada hora
- /etc/cron.daily/ - Scripts executados diariamente
- /etc/cron.weekly/ - Scripts executados semanalmente
- /etc/cron.monthly/ - Scripts executados mensalmente
Basta colocar scripts executáveis nesses diretórios para automação simples.
Segurança e Boas Práticas
- Use caminhos absolutos para comandos e arquivos
- Teste scripts manualmente antes de agendar
- Configure logs apropriados para monitoramento
- Use usuários com privilégios mínimos necessários
- Implemente verificações de erro nos scripts
- Documente todos os cron jobs importantes
Alternativas Modernas
Para tarefas mais complexas, considere ferramentas como:
- systemd timers - Alternativa moderna ao cron
- Anacron - Para sistemas que não ficam ligados 24h
- Jenkins - Para automação de CI/CD
- Ansible - Para automação de infraestrutura
Em ambientes de hospedagem compartilhada, painéis como cPanel oferecem interfaces gráficas para gerenciar cron jobs sem acesso direto ao terminal.
Comentários
0Inicie sessão para deixar um comentário
Iniciar sessãoSé el primero en comentar