Poupe até 53% em Servidores VPS, escolha agora. Oferta limitada.

Entenda o que é Cron: automatização de tarefas no Linux

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:

  1. Acesse o crontab com o comando crontab -e
  2. Defina a sintaxe de tempo usando cinco campos
  3. Especifique o comando ou script a ser executado
  4. Salve o arquivo e verifique se o cron está ativo
  5. Monitore os logs para confirmar a execução
  6. 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

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.

Conheça nossos planos de VPS Linux

  • 0 Os usuários acharam isso útil
  • cron, linux, automacao, agendamento, tarefas, ubuntu, AviraHost
Esta resposta foi útil?

Artigos Relacionados

Instalando painel de gerenciamento de hospedagem VirtualMin.

O virtualmin é um painel de gerenciamento de hospedagem de sites gratuito, que é suportado por...

Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular

1. Pelo menu Iniciar, acesse os “Acessórios do Windows” e abra o “Conexão de Área de Trabalho...

Como acessar o painel de gerenciamento dos meus Serviços.

Para acessar o painel de gerenciamento do seu serviço basta seguir o passo á passo abaixo.   1....

Compreendendo o Servidor VPS: O que é e Como Funciona!

Um servidor VPS (Virtual Private Server) é uma solução de hospedagem na qual um servidor físico é...

Como trocar a senha do usuário root do servidor VPS ou Dedicado.

Para trocar a senha do usuário root em um servidor VPS da AviraHost, você pode seguir os...