O que é cron job: entendendo sua sintaxe e como configurar trabalhos cron

Um cron job é um agendador baseado em tempo presente em sistemas Unix-like, como Linux e macOS. Ele serve para automatizar tarefas repetitivas — como backups, manutenção do sistema e execução de scripts — sem necessidade de intervenção manual.

O funcionamento é simples: você define quando algo deve rodar e qual comando será executado em um arquivo chamado crontab. A partir daí, o sistema cuida do resto, mantendo processos importantes rodando em segundo plano de forma consistente.

Para usar cron jobs de forma eficiente, é importante entender alguns conceitos básicos:

  • Sintaxe e operadores. O cron usa cinco campos de tempo (minuto, hora, dia do mês, mês e dia da semana), além de caracteres especiais como asteriscos (*) e barras (/) para definir intervalos e repetições.
  • Configuração. Os agendamentos podem ser gerenciados com o comando crontab ou por meio de scripts colocados em diretórios específicos do sistema.
  • Permissões. Os arquivos cron.allow e cron.deny controlam quem pode criar cron jobs, ajudando a manter a segurança do sistema.
  • Aplicação prática. Alguns usos comuns incluem automatizar backups de banco de dados, limpar caches do servidor e enviar relatórios periódicos por e-mail.

O que é cron job?

Um cron job (ou tarefa cron) é um utilitário que permite a usuários de Linux e Unix executar comandos ou scripts automaticamente em uma data e horário definidos. Em vez de rodar uma tarefa manualmente todos os dias ou semanas, você agenda uma vez, e o sistema executa tudo em segundo plano no momento certo.

Essa automação é especialmente importante na administração de servidores. Pense em alguém gerenciando um VPS: fazer backup de bancos de dados manualmente todas as noites às 3h da manhã não é viável. Um cron job assume essa tarefa de forma confiável, aumentando a eficiência e reduzindo erros humanos.

Alguns usos comuns de cron jobs incluem:

  • Manutenção do sistema. Remover arquivos temporários, rotacionar logs ou limpar cache para liberar espaço em disco.
  • Gerenciamento de dados. Criar dumps de bancos de dados MySQL para backup ou sincronizar arquivos entre servidores remotos.
  • Notificações. Enviar relatórios automáticos por e-mail, verificar atualizações do sistema ou monitorar o uso de disco e alertar quando o espaço estiver acabando.
  • Aplicações web. Executar scripts PHP para tarefas como envio de newsletters, renovações de assinaturas ou rotinas internas do sistema.

Como funciona um cron job?

Um cron job é executado pelo cron daemon (crond), um serviço que roda continuamente em segundo plano e executa comandos definidos nos arquivos de agendamento, chamados de crontab.

A cada minuto, o daemon verifica esses arquivos para ver se existe alguma tarefa programada para aquele momento. Se houver, o comando é executado automaticamente, sem qualquer ação manual.

É importante diferenciar os dois tipos principais de arquivos de configuração:

  • Crontab do sistema. Fica localizado em /etc/crontab e é usado para tarefas que afetam todo o sistema. Apenas o usuário root pode editá-lo. Esse arquivo inclui um campo extra que define qual usuário executa o comando.
  • Crontab do usuário. Cada usuário tem seu próprio crontab. O local de armazenamento varia conforme a distribuição, como /var/spool/cron/crontabs/ no Debian e Ubuntu ou /var/spool/cron/ no RHEL, CentOS e Fedora. Esses arquivos são editados com o comando crontab -e, e as tarefas são executadas com as permissões do próprio usuário.

Entendendo a sintaxe e os operadores do crontab

A sintaxe do crontab define tarefas agendadas (cron jobs) usando uma única linha composta por cinco campos de data e hora, seguidos pelo comando que será executado. Além disso, operadores especiais permitem criar agendamentos mais flexíveis e precisos.

O formato básico de uma entrada no crontab é o seguinte:

minuto hora dia_do_mês mês dia_da_semana comando_a_executar

Os cinco campos de tempo (minuto, hora, data)

Os cinco campos de tempo definem quando um cron job será executado. O sistema lê esse agendamento sempre na mesma ordem, da esquerda para a direita.

Campo Descrição Valores permitidos
Minuto O minuto da hora em que o comando é executado.0–59
Hora A hora do dia no formato de 24 horas.0–23
Dia do mês A data específica do mês.1–31
Mês O mês do ano.1–12 ou JAN–DEZ
Dia da semana O dia da semana.0–6, onde domingo = 0 (ou 7 em alguns sistemas)

Importante! Tenha cuidado ao agendar tarefas em múltiplos servidores com fusos horários diferentes. Sempre verifique o horário local de cada servidor usando o comando date para garantir que o cron job será executado no momento esperado.

Operadores do crontab

Os operadores do crontab permitem criar intervalos e padrões mais avançados dentro dos campos de tempo. As implementações Cronie e Vixie cron (as mais comuns) oferecem suporte a vários operadores e são padrão na maioria das distribuições Linux, como Ubuntu, Debian, RHEL, CentOS e Fedora.

  • Asterisco (*). Representa todos os valores possíveis. Por exemplo, um asterisco no campo de minutos significa que a tarefa é executada a cada minuto.
  • Vírgula (,). Especifica uma lista de valores únicos. Por exemplo, 1,5 no campo do dia da semana executa a tarefa na segunda e na sexta-feira.
  • Hífen (-). Define um intervalo de valores. Por exemplo, os valores 6 a 9 no campo do mês executam a tarefa de junho a setembro.
  • Barra (/). Especifica valores ou incrementos de passo. Por exemplo, */12 no campo de hora executa o comando a cada 12 horas.

Os operadores abaixo não funcionam no cron tradicional. Eles são usados em agendadores baseados em Java, como Quartz e Spring Boot, ou em serviços de nuvem, como o AWS EventBridge:

  • Last (L). Especifica o último dia do mês ou a última ocorrência de um dia da semana.
  • Weekday (W). Encontra o dia da semana mais próximo (de segunda a sexta-feira) de uma data específica.
  • Hash (#). Especifica a enésima ocorrência de um dia da semana, como a segunda segunda-feira do mês.
  • Ponto de interrogação (?). Indica que o dia do mês ou o dia da semana não importa.

💡 Dica profissional

A maioria das implementações de cron permite combinar intervalos com incrementos. Por exemplo, 1-20/2 executa a tarefa a cada dois minutos durante os primeiros 20 minutos do período definido.

Exemplos de cron job

Os exemplos abaixo mostram como aplicar a sintaxe do crontab em tarefas reais do dia a dia.

Sintaxe do Cron FinalidadeExplicação
0 0 * * 0 /root/backup.sh Backup semanalExecuta o script de backup todo domingo à meia-noite.
0 * * * 1 /root/clearcache.sh Manutenção de servidorLimpa o cache a cada hora, mas apenas às segundas-feiras.
0 6,18 * * * /root/db-dump.sh Snapshot do banco de dadosGera um dump do banco duas vezes por dia: às 6h e às 18h.
*/10 * * * * /scripts/monitor.sh Monitoramento de uptimeExecuta um script de monitoramento a cada 10 minutos.
0 0 1,15 * * /scripts/payroll.php Tarefa quinzenalRoda o script de folha de pagamento nos dias 1 e 15 de cada mês, à meia-noite.
30 2 * * * /usr/bin/apt update Atualização do sistemaVerifica diariamente se há atualizações de pacotes às 2h30 da manhã, que geralmente é um horário de baixo tráfego.
* * * * /scripts/s1.sh; /scripts/s2.sh Múltiplas tarefasExecuta mais de um comando no mesmo cron job, separando-os por ponto e vírgula.
0 8 1-7 * * [ “$(date ‘+%u’)” = “1” ] && /scripts/report.sh Relatório mensalGera um relatório às 8h nos dias 1 a 7 do mês, mas só executa o script se for segunda-feira.

O que são as special strings do cron?

As special strings são atalhos que começam com @ e substituem a sintaxe tradicional com cinco campos. Elas tornam os agendamentos mais fáceis de ler e reduzem a chance de erros em tarefas comuns.

Veja as mais usadas:

  • @reboot. Executa o comando uma única vez quando o daemon do cron é iniciado.
  • @hourly. Executa uma vez por hora (equivalente a 0 * * * * ).
  • @daily (ou @midnight). Executa uma vez por dia à meia-noite (equivalente a 0 0 * * * ).
  • @weekly. Executa uma vez por semana, no domingo à meia-noite (equivalente a 0 0 * * 0 ).
  • @monthly. Executa-se uma vez por mês, no dia 1º à meia-noite (equivalente a 0 0 1 * * ).
  • @yearly (ou @annually). Executa-se uma vez por ano, no dia 1º de janeiro (equivalente a 0 0 1 1 * ).

Alguns exemplos de cron jobs usando special strings:

@daily /home/user/scripts/daily-cleanup.sh
@reboot /usr/local/bin/start-my-app.sh
@hourly /var/www/html/monitor.php

Importante! A diretiva @reboot é executada quando o cron daemon é iniciado — e não necessariamente quando o sistema operacional liga. Se o serviço do cron for parado e iniciado novamente sem reiniciar o sistema, os jobs com @reboot serão executados outra vez.

Permissões do cron

Administradores de sistema controlam quem pode criar e executar cron jobs usando dois arquivos localizados em /etc/: cron.allow e cron.deny.

  • cron.allow. Se esse arquivo existir, apenas os usuários listados nele podem criar, editar ou executar cron jobs. Todos os demais usuários são bloqueados.
  • cron.deny. Se o cron.allow não existir, o sistema passa a verificar o cron.deny. Nesse caso, os usuários listados não podem usar o cron, enquanto todos os outros têm permissão.

Se nenhum dos dois arquivos existir, o comportamento padrão depende da distribuição Linux:

  • Debian e Ubuntu: por padrão, todos os usuários podem usar o cron.
  • RHEL, CentOS e Fedora: por padrão, somente o usuário root pode usar o cron.

Por isso, é sempre recomendável verificar a documentação da sua distribuição ou testar o acesso ao cron com um usuário que não seja root.

Por exemplo, para permitir que apenas um administrador de banco de dados (dbadmin) agende tarefas, crie um arquivo cron.allow e adicione dbadmin a ele. Assim, você evita que outros usuários executem tarefas em segundo plano não autorizadas e consumam recursos do sistema.

Como criar um cron job

Para configurar um cron job, acesse o terminal do sistema, confirme que o cron está instalado, crie ou edite um arquivo crontab com crontab -e e visualize as tarefas agendadas usando crontab -l.

Algumas tarefas podem exigir permissões elevadas ou acesso como root. Em outros casos, scripts recorrentes precisam ficar em diretórios específicos do sistema para funcionarem corretamente.

1. Acesse o terminal ou via SSH

Para gerenciar cron jobs, você precisa acessar a linha de comando do seu servidor. Se você utiliza um servidor remoto ou VPS, conecte-se via SSH com um cliente como o PuTTY (no Windows) ou o Terminal (no macOS ou Linux).

Usuários de VPS da Hostinger também podem usar o terminal no navegador, disponível diretamente no painel do VPS no hPanel, o que facilita a configuração sem depender de ferramentas externas.

2. Instale o cron

A maioria das distribuições Linux já vem com o cron instalado por padrão. Para confirmar se o serviço está ativo e em execução, verifique o status:

systemctl status cron

Se o cron não estiver instalado, você pode adicioná-lo usando o gerenciador de pacotes da sua distribuição.

  • Para Ubuntu e Debian:
sudo apt update
sudo apt install cron
  • Para RHEL, CentOS e Fedora:
sudo dnf install cronie
sudo systemctl enable crond
sudo systemctl start crond

3. Crie ou edite um arquivo crontab

A forma principal de agendar tarefas é usando o comando crontab. Para criar um novo arquivo crontab ou editar um existente, execute:

crontab -e

Se ainda não existir um crontab associado ao seu usuário, o sistema cria um automaticamente.

Na primeira vez que você rodar esse comando, será solicitado que escolha um editor de texto, como nano ou vim. Para quem está começando, o nano costuma ser a opção mais simples.

Depois que o arquivo abrir, basta adicionar o cron job em uma nova linha, seguindo a sintaxe correta.

💡 Dica profissional

Antes de agendar qualquer tarefa, teste o script manualmente para garantir que ele funciona. Por exemplo, execute ./backup.sh diretamente via SSH. Se o script não rodar manualmente, ele também não vai funcionar quando for executado pelo cron.

4. Veja as tarefas agendadas

Para visualizar os cron jobs configurados para o seu usuário, sem editar o arquivo, use a opção de listagem:

crontab -l

Se você precisar ver os cron jobs de outro usuário, execute o comando abaixo substituindo username pelo nome da conta desejada. Esse passo exige permissões de root ou acesso administrativo:

sudo crontab -u username -l

5. Conceda acesso root, se necessário

Alguns comandos — como atualizações do sistema ou alterações em configurações globais — exigem privilégios de root. A forma mais simples de agendar esse tipo de tarefa é adicioná-la diretamente ao crontab do usuário root:

sudo crontab -e

Qualquer comando definido no crontab do root é executado com permissões totais, sem necessidade de configurações extras.

Importante! Evite rodar tarefas como root sempre que possível. Se um script precisa acessar apenas arquivos ou diretórios específicos, considere ajustar a propriedade com o comando chown ou usar uma conta de serviço dedicada. Isso reduz riscos e melhora a segurança do sistema.

6. Use diretórios do cron para scripts recorrentes

Para tarefas de manutenção geral que não precisam rodar em um minuto exato, você pode colocar scripts em diretórios padrão do sistema. O cron executa automaticamente scripts executáveis encontrados nesses locais:

  • /etc/cron.hourly/
  • /etc/cron.daily/
  • /etc/cron.weekly/
  • /etc/cron.monthly/

Para que funcionem corretamente, os scripts nesses diretórios devem ter permissão de execução e seguir as regras do run-parts:

  • Os nomes dos arquivos podem conter apenas letras (maiúsculas e minúsculas), números, sublinhados (_) e hífens (-).
  • Não use extensões de arquivo. Por exemplo, um script chamado backup.sh será ignorado. Renomeie para backup.
  • Não use pontos (.) no nome do arquivo. Um nome como meu.script falha silenciosamente — um erro comum e difícil de identificar.

7. Exclua tarefas agendadas

Para remover todos os cron jobs do usuário atual, use a opção de remoção (-r):

crontab -r

Como esse comando apaga todas as tarefas imediatamente, o mais seguro é combiná-lo com a opção interativa -i, que pede confirmação antes de prosseguir:

crontab -ri

Importante! A flag -i só funciona quando usada junto com -r. Executar crontab -i sozinho não tem efeito.

Qual é o próximo passo depois de agendar tarefas com cron?

Os cron jobs automatizam tarefas recorrentes ao combinar três elementos: o cron daemon (que roda continuamente), o crontab (que define o agendamento) e o comando ou script responsável pela execução. Essa automação é essencial para gerenciar sistemas com eficiência e lidar com rotinas sem trabalho manual.

Mas é importante lembrar: um cron job só é tão bom quanto o script que ele executa. O cron apenas dispara o comando no horário definido — quem faz o trabalho de verdade é o script. Se ele tiver erros, a tarefa vai falhar, mesmo que o agendamento esteja correto.

Por isso, depois de entender o que é cron job e como agendar tarefas, o próximo passo natural é aprender a escrever scripts Bash eficientes. Com isso, você consegue automatizar processos mais complexos e realmente úteis no dia a dia.

Todo o conteúdo dos tutoriais deste site segue os rigorosos padrões editoriais e valores da Hostinger.

Author
O autor

Bruno Santana

Jornalista formado pela Universidade Federal da Bahia e Especialista em Marketing de Conteúdo na Hostinger, onde atuo na criação e otimização de artigos úteis, envolventes e criativos em áreas como desenvolvimento web e, marketing. Além disso, sou colaborador eventual do site MacMagazine e da editoria de cultura do Jornal A Tarde, fascinado por arte, culinária e tecnologia.

O que dizem nossos clientes

Deixe uma resposta

Por favor, preencha os campos obrigatórios.Por favor, aceite os termos de privacidade.Por favor, preencha os campos obrigatórios e aceite a seleção dos termos de privacidade.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.