10 min de leitura · Guia técnico
Cron é um daemon do sistema Linux que executa comandos ou scripts automaticamente em horários pré-definidos. Ele funciona em segundo plano verificando a cada minuto se há tarefas agendadas para executar. Para configurar automação com cron, siga estes passos:
- Acesse o crontab com o comando crontab -e
- Defina a sintaxe de tempo usando cinco campos
- Especifique o comando ou script a ser executado
- Salve o arquivo e verifique se o cron está ativo
- Monitore os logs para confirmar a execução
- Teste com tarefas simples antes de implementar automações críticas
Pré-requisitos
- Acesso root ou sudo ao servidor Linux
- Conhecimento básico de linha de comando
- Editor de texto configurado (nano, vim ou vi)
- Serviço cron instalado e ativo no sistema
- Permissões adequadas para executar os scripts desejados
Como funciona o sistema cron no Linux
O daemon cron é um serviço fundamental que roda continuamente em sistemas Linux, verificando a cada minuto se existem tarefas programadas para execução. Ele lê arquivos de configuração chamados crontabs, que contêm instruções sobre quando e quais comandos executar.
Existem dois tipos principais de cron: o cron do sistema e o cron do usuário. O cron do sistema utiliza o arquivo /etc/crontab e pode executar tarefas como qualquer usuário, incluindo root. Já o cron do usuário é acessado através do comando crontab -e e executa tarefas com as permissões do usuário atual.
Para verificar se o cron está funcionando corretamente, use o comando:
systemctl status cron
No Ubuntu, ou:
systemctl status crond
No CentOS e Red Hat. O output esperado deve mostrar o serviço como "active (running)".
Sintaxe completa do crontab e exemplos práticos
A sintaxe do crontab utiliza cinco campos separados por espaços, seguidos pelo comando a ser executado. Os campos representam: minuto (0-59), hora (0-23), dia do mês (1-31), mês (1-12) e dia da semana (0-7, onde 0 e 7 representam domingo).
Estrutura básica:
* * * * * comando_a_executar
│ │ │ │ │
│ │ │ │ └─── Dia da semana (0-7)
│ │ │ └───── Mês (1-12)
│ │ └─────── Dia do mês (1-31)
│ └───────── Hora (0-23)
└─────────── Minuto (0-59)
Exemplos práticos de configuração:
# Backup diário às 2h da manhã
0 2 * * * /home/usuario/backup.sh
# Limpeza de logs a cada 6 horas
0 */6 * * * find /var/log -name "*.log" -mtime +7 -delete
# Reiniciar serviço toda segunda-feira às 3h
0 3 * * 1 systemctl restart apache2
# Executar script a cada 15 minutos
*/15 * * * * /usr/local/bin/monitor.sh
Para editar o crontab do usuário atual, execute:
crontab -e
Para listar as tarefas agendadas:
crontab -l
Configurando tarefas automatizadas essenciais
A automação de tarefas com cron é fundamental para manutenção de servidores. As tarefas mais comuns incluem backups, limpeza de arquivos temporários, monitoramento de recursos e atualizações de segurança.
Para criar um backup automatizado do banco de dados MySQL:
# Backup MySQL diário às 1h30
30 1 * * * mysqldump -u usuario -psenha database_name > /backup/db_$(date +\%Y\%m\%d).sql
Configuração para limpeza automática de arquivos temporários:
# Limpar arquivos temporários semanalmente
0 4 * * 0 find /tmp -type f -atime +7 -delete
Monitoramento de espaço em disco com alerta:
# Verificar espaço em disco a cada hora
0 * * * * df -h | awk '$5 > 80 {print $0}' | mail -s "Disco cheio" [email protected]
Atenção: Sempre teste scripts manualmente antes de adicioná-los ao cron. Verifique se os caminhos dos arquivos estão corretos e se as permissões estão adequadas.
Para tarefas que requerem privilégios administrativos, considere usar o acesso root configurado adequadamente em seu servidor VPS.
Gerenciamento avançado de cron jobs
O gerenciamento eficiente de cron jobs envolve organização, monitoramento e controle de saída. Para ambientes de produção, é essencial implementar logging adequado e tratamento de erros.
Configuração com redirecionamento de saída:
# Salvar saída em log específico
0 2 * * * /home/usuario/backup.sh >> /var/log/backup.log 2>&1
# Executar silenciosamente (descartar saída)
*/5 * * * * /usr/local/bin/monitor.sh > /dev/null 2>&1
# Enviar apenas erros por email
0 3 * * * /home/usuario/script.sh > /dev/null
Para gerenciar múltiplos cron jobs, organize-os em categorias:
# === BACKUPS ===
0 1 * * * /scripts/backup_database.sh
30 1 * * * /scripts/backup_files.sh
# === MANUTENÇÃO ===
0 4 * * 0 /scripts/cleanup.sh
0 5 * * 1 /scripts/update_system.sh
# === MONITORAMENTO ===
*/10 * * * * /scripts/check_services.sh
Use variáveis de ambiente no crontab quando necessário:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
[email protected]
0 2 * * * /home/usuario/backup.sh
Problemas comuns e como resolver
Cron job não executa mesmo com sintaxe correta
Causa: Problemas de permissão, caminhos relativos ou variáveis de ambiente não definidas.
Solução: Use caminhos absolutos para comandos e arquivos. Verifique permissões com ls -la e defina PATH no crontab. Teste o comando manualmente primeiro.
Script executa manualmente mas falha no cron
Causa: Diferenças no ambiente de execução entre shell interativo e cron.
Solução: Defina todas as variáveis necessárias no início do script. Use #!/bin/bash como shebang e especifique caminhos completos para todos os comandos.
Emails de erro do cron lotando a caixa postal
Causa: Scripts gerando saída ou erros constantemente sem tratamento adequado.
Solução: Redirecione saída para arquivos de log ou /dev/null. Configure MAILTO="" para desabilitar emails ou use um endereço específico para logs.
Tarefas executando em horários incorretos
Causa: Fuso horário do sistema diferente do esperado ou erro na sintaxe de tempo.
Solução: Verifique o fuso horário com timedatectl e ajuste se necessário. Confirme a sintaxe do crontab com ferramentas online ou crontab -l.
Monitoramento e logs do cron
O monitoramento adequado dos cron jobs é essencial para garantir que as automações funcionem conforme esperado. Os logs do cron fornecem informações valiosas sobre execução e falhas.
Localização dos logs por distribuição:
# Ubuntu/Debian
tail -f /var/log/syslog | grep CRON
# CentOS/RHEL
tail -f /var/log/cron
# Verificar logs específicos do usuário
grep "$(whoami)" /var/log/syslog | grep CRON
Para criar um sistema de monitoramento personalizado:
# Script de verificação de cron jobs
#!/bin/bash
LOG_FILE="/var/log/cron_monitor.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
# Verificar se cron está rodando
if ! pgrep cron > /dev/null; then
echo "[$DATE] ERRO: Serviço cron não está rodando" >> $LOG_FILE
systemctl start cron
fi
# Verificar jobs recentes
RECENT_JOBS=$(grep "$(date '+%b %d %H:')" /var/log/syslog | grep CRON | wc -l)
echo "[$DATE] Jobs executados na última hora: $RECENT_JOBS" >> $LOG_FILE
Configure este script para executar a cada hora:
0 * * * * /usr/local/bin/cron_monitor.sh
Para ambientes críticos, implemente alertas baseados em falhas. Considere integrar com sistemas de monitoramento disponíveis em servidores Linux otimizados.
Perguntas frequentes sobre cron
O que é cron no Linux?
Cron é um daemon do sistema Linux que executa comandos ou scripts automaticamente em horários pré-definidos. Ele funciona em segundo plano e verifica a cada minuto se há tarefas agendadas para executar. É essencial para automação de backups, limpeza de logs e manutenção do sistema.
Como funciona a sintaxe do crontab?
A sintaxe do crontab usa cinco campos separados por espaços: minuto (0-59), hora (0-23), dia do mês (1-31), mês (1-12) e dia da semana (0-7). Por exemplo, '0 2 * * *' executa às 2h da manhã todos os dias. Asteriscos (*) significam 'qualquer valor' para aquele campo.
Qual a diferença entre cron do sistema e cron do usuário?
O cron do sistema (/etc/crontab) executa tarefas como root e inclui um campo adicional para especificar o usuário. O cron do usuário (crontab -e) executa tarefas com as permissões do usuário atual e não possui o campo de usuário. Ambos são úteis para diferentes tipos de automação.
Como verificar se o cron está funcionando?
Verifique o status com 'systemctl status cron' no Ubuntu ou 'systemctl status crond' no CentOS. Os logs ficam em /var/log/syslog (Ubuntu) ou /var/log/cron (CentOS). Para testar, crie um job simples que escreva em um arquivo e verifique se foi executado no horário esperado.
É possível executar cron jobs a cada segundo?
Não, o cron verifica tarefas apenas a cada minuto, sendo 1 minuto o menor intervalo possível. Para execução em segundos, use sleep dentro de um script ou ferramentas como systemd timers. Uma alternativa é criar um loop dentro de um script executado pelo cron que rode por 1 minuto com intervalos menores.
Conclusão
- Configure cron jobs com sintaxe correta e teste sempre manualmente antes da implementação
- Implemente monitoramento através de logs e redirecionamento de saída adequado
- Use caminhos absolutos e defina variáveis de ambiente para evitar falhas de execução
Leia também
- Instalando painel de gerenciamento de hospedagem VirtualMin.
- Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular
- Como acessar o painel de gerenciamento dos meus Serviços.
Precisa de ajuda com automação de tarefas no seu servidor?
A AviraHost oferece servidores VPS Linux otimizados com cron pré-configurado e suporte técnico especializado. Nossa equipe pode auxiliar na implementação de automações críticas para seu ambiente.