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

Um cron job é uma tarefa criada usando cron, uma ferramenta para programar e automatizar processos futuros em sistemas operacionais baseados em Unix, como o Linux. 

Os cron jobs são excelentes para a sua produtividade, pois evitam que você realize tarefas repetitivas manualmente — o que garante eficiência e reduz a incidência de erros.

Neste artigo, vamos explicar o básico sobre cron jobs, seus tipos, sintaxe, strings especiais e permissões. Nós também vamos compartilhar as melhores práticas de cron job e fornecer exemplos de comandos para você usar os trabalhos cron da melhor maneira possível. Vamos lá?

Com as tarefas cron, os administradores de sistemas podem automatizar elementos como manutenção, monitoramento do espaço em disco e backups regulares. Isso torna os cron jobs ideais para computadores que funcionam 24 horas, como um servidor privado virtual. Eles também são úteis para desenvolvedores web, pois permitem que os profissionais configurem cron jobs simultâneos em intervalos diferentes para fazer backups de um site, verificar links quebrados ou limpar seu cache, por exemplo.

Como o cron job funciona

Cron é um daemon – um processo em segundo plano executando tarefas não interativas. Um arquivo cron é um arquivo de texto que contém comandos para serem executados periodicamente em um horário específico. 

A tabela cron, ou o arquivo de configuração crontab, pode ser encontrado por padrão em /etc/crontab. Apenas administradores do sistema podem editar o arquivo crontab do sistema. No entanto, como os sistemas operacionais Unix-like suportam vários administradores, os usuários podem criar seus próprios arquivos para agendar tarefas específicas.

Embora convenientes, os trabalhos cron têm algumas limitações:

  • O intervalo mais curto entre tarefas é de 60 segundos. Os usuários só podem definir as configurações de intervalo do cron job para um minuto ou mais.
  • Trabalhos perdidos precisam de um reset manual. Os administradores não podem distribuir tarefas cron para vários computadores em uma rede. Então, se o cron do computador falhar, as tarefas agendadas não serão executadas. Você deve reiniciar os trabalhos perdidos manualmente.
  • Sem mecanismo de tentativas automáticas. O cron é projetado para funcionar em um horário determinado. Se uma tarefa falhar, ela não será executada até o próximo horário agendado. Isso torna o cron inadequado para tarefas incrementais.
  • Sem variáveis de ambiente. O Crontab não consegue ler as variáveis de ambiente contendo dados de configuração que são necessários para executar alguns aplicativos corretamente.

Se você quiser automatizar um trabalho avulso, recomendamos usar outro método de agendamento em vez de um cron job.

Dica

Antes de criar um trabalho cron, certifique-se de que seu script funciona. Para fazer isso, abra o arquivo no seu navegador por URL ou execute-o via SSH, dependendo do tipo do script. Se ele não funcionar, entre em contato com a equipe de suporte do seu provedor de hospedagem para obter ajuda.

Sintaxe do Crontab

cinco campos do arquivo crontab

Antes de configurar os trabalhos cron, você deve entender a sintaxe e a formatação das tarefas para garantir que o script seja executado corretamente. A sintaxe do crontab consiste em cinco campos com os seguintes valores possíveis:

  • Minute. O minuto da hora em que o comando será executado, variando de 0-59.
  • Hour. A hora em que o comando será executado, variando de 0-23 em uma notação de 24 horas.
  • Day of the month. A data do mês em que o usuário deseja que o comando seja executado, variando de 1-31.
  • Month. O mês em que o usuário quer que o comando seja executado. Varia de 1-12, representando de janeiro até dezembro.
  • Day of the week. O dia da semana para um comando ser executado, variando de 0-6. O valor vai de domingo a sábado. Em alguns sistemas, o valor 7 representa o domingo.

Importante! Tenha cuidado ao agendar tarefas cron para diferentes fusos horários e certifique-se de que sua configuração está correta.

Além da sintaxe, você deve entender os operadores dos cron jobs para modificar o valor em cada campo. Você deve usar corretamente esses operadores em todos os arquivos crontab para garantir que seus comandos sejam executados:

  • Asterisco (*). Esse operador significa todos os possíveis valores em um campo. Por exemplo, escreva um asterisco no campo Minuto para fazer o trabalho cron ser executado a cada minuto.
  • Vírgula (,). Um operador para listar vários valores. Por exemplo, escrever 1,5 no campo day-of-the-week programará o trabalho para ser executado toda segunda e sexta-feira.
  • Hífen (-). Os usuários podem determinar uma variedade de valores. Escreva 6-9 no campo Month para configurar um trabalho cron de junho a setembro.
  • Separador (/). Esse separador divide um valor. Se você quer executar um script a cada doze horas, escreva */12 no campo Hour.
  • Last (L). Os usuários podem usar esse operador nos campos day-of-month e day-of-week. Por exemplo, escrever 3L  no campo day-of-week significa a última quarta-feira do mês.
  • Weekday (W). Um operador que determina o dia útil mais próximo de um determinado horário. Por exemplo, se o de um mês é um sábado, escrever 1W no campo day-of-month executará o comando na segunda-feira  3.
  • Hash (##). Um operador para o campo day-of-week que determina um dia específico do mês, usando um número entre 1 a 5. Por exemplo, 1#2 significa a segunda segunda-feira do mês.
  • Ponto de interrogação (?). Esse operador não insere nenhum valor específico para os campos de day-of-month e day-of-week. Normalmente ele é substituído pelo horário de inicialização do daemon cron.

Dica

No Vixie cron, você pode combinar separadores com intervalos para especificar valores de passo, como 1-2/12. Para aprender mais sobre o uso do operador, leia o manual do cron.

Se você não tem certeza sobre como escrever manualmente a sintaxe do cron, use ferramentas gratuitas como o Crontab Generator ou o Crontab.guru para gerar os números exatos para a hora e data do seu comando.

Exemplos de sintaxe cron

Para te ajudar a entender melhor a sintaxe do cron, aqui está uma lista com exemplos de comandos para realizar a gestão do seu sistema com cron jobs:

ExemploExplicação
0 0 * * 0 /root/backup.shRealiza um backup todo domingo à meia-noite.
0 * * * 1 /root/clearcache.shLimpa o cache a cada hora nas segundas-feiras.
0 6,18 * * * /root/backup.shFaz backup dos dados duas vezes ao dia, às 6 da manhã e às 6 da tarde.
*/10 * * * * /scripts/monitor.shRealiza o monitoramento a cada 10 minutos
*/15 * * * * /root/backup.shRealiza um backup a cada 15 minutos.
* * 20 7 * /root/backup.shRealiza um backup a cada minuto no dia 20 de julho.
0 0 * * 2 * /root/backup.shRealiza um backup à meia-noite todas as terças-feiras.
* * * 1,2,5 * /scripts/monitor.shRealiza o monitoramento a cada minuto em janeiro, fevereiro e maio.
10-59/10 5 * * * /root/clearcache.shLimpa o cache a cada 10 minutos às 5 da manhã, começando às 5:10 da manhã.
0 8 1 */3 * /home/user/script.shFaz a ação ser executada trimestralmente no primeiro dia do mês às 8 da manhã.
0 * * * * /root/backup.shCria um backup a cada hora.
* * * * * /scripts/script.sh; /scripts/scrit2.shInclui várias tarefas em um único cron job. Útil para programar várias tarefas para serem executadas ao mesmo tempo.
@reboot /root/clearcache.shLimpa o cache do servidor toda vez que o sistema for ligado.
0 8 1-7 * 1 /scripts/script.shExecuta um script na primeira segunda-feira de cada mês às 8 da manhã.
5 4 * * 0 /root/backup.shCria um backup todo domingo de manhã às 4:05.
15 9 1,20 * * /scripts/monitor.shRealiza o monitoramento às 9:15 da manhã no 1º e 20º dia de cada mês.
@hourly /scripts/monitor.shRealiza o monitoramento a cada hora.
0 0 1,15 * 3 /scripts/script.shExecuta um script à meia-noite todas as quartas-feiras entre o 1º e o 15º de cada mês.
15 14 1 * * /root/clearcache.shLimpa o cache no primeiro dia de cada mês às 14:15.
15 6 1 1 * /root/backup.shRealiza um backup todo dia 1º de janeiro às 6:15 da manhã.
0 0 * * * /scripts/monitor.shExecuta o script de monitoramento uma vez por dia à meia-noite.
0 0 15 * * /root/clearcache.shLimpa o cache à meia-noite do dia 15 de cada mês.

Strings especiais de cron jobs

Strings especiais são usadas para agendar rapidamente tarefas cron em certos intervalos de tempo sem especificar os valores exatos. Para usá-las, escreva uma frase simples começando com um @. Aqui estão algumas strings especiais úteis para usar em comandos:

  • @hourly. O trabalho será executado uma vez a cada hora.
  • @daily  ou  @midnight. Essas strings executarão a tarefa todos os dias à meia-noite.
  • @weekly. Uma string para agendar tarefas uma vez por semana à meia-noite de domingo.
  • @monthly. Esta string especial executa um comando uma vez no primeiro dia de cada mês.
  • @yearly. Use essa string para executar uma tarefa uma vez por ano à meia-noite do dia 1º de janeiro.
  • @reboot. Essa string executa o cron job uma vez durante a inicialização do sistema.

Permissões do cron

Certifique-se de definir as permissões adequadas para os arquivos cron do seu sistema para permitir que os trabalhos sejam executados. Você pode criar ou editar dois arquivos para definir as permissões: cron.allow e cron.deny.

Se /etc/cron.allow existir, ele deve conter um nome de usuário permitido para executar a automação do trabalho cron. No entanto, se o seu sistema tem /etc/cron.deny contendo um nome de usuário, essa conta não pode usar o cron.

Como executar tarefas cron

Nesta seção, vamos mostrar como programar tarefas cron inserindo comandos em um programa shell em um sistema baseado em Linux, como o servidor VPS da Hostinger.

Conecte-se ao seu VPS usando o Terminal ou um cliente SSH como o PuTTY. Alternativamente, os usuários do VPS da Hostinger podem acessar a interface de linha de comando (CLI) em seu navegador através do hPanel.

Dica

Além de VPS, os planos de hospedagem gerenciada da Hostinger também suportam cron jobs. Por exemplo, o plano de hospedagem Business permite que você agende trabalhos ilimitados.

Após acessar o hPanel, navegue até o menu VPS na barra superior e selecione seu plano. Então, clique em Terminal do navegador.

A página de visão geral do VPS no hPanel. O botão do terminal do navegador está destacado

O cron geralmente vem pré-instalado como padrão em todas as distribuições Linux. Caso contrário, execute o comando de instalação de acordo com o seu gerenciador de pacotes. Aqui está o comando para o Ubuntu com o apt:

sudo apt install cron

Antes de prosseguir com as operações básicas do cron job, você deve entender os arquivos de configuração: o system crontab e o user crontab.

O system crontab é usado para agendar trabalhos essenciais em todo o sistema, que só podem ser editados por aqueles com privilégios de root. Por outro lado, o user crontab serve para criar e editar tarefas que se aplicam apenas no nível do usuário.

Para editar o system crontab, certifique-se de que o usuário atual tem privilégios de root. Continue lendo para aprender várias operações básicas que o cron pode realizar.

operações do cron na linha de comando

Usando um cron job para criar um arquivo crontab

Insira o trecho abaixo na linha de comando para editar um arquivo crontab existente. Se o seu sistema não tiver o arquivo, o comando criará automaticamente um novo.

crontab -e

Ao inserir crontab -e pela primeira vez, ele vai te perguntar qual editor de texto você quer usar para editar o arquivo, como o nano ou o vi. No editor de texto, você pode adicionar outros comandos ou editar os existentes.

Usando cron jobs para exibir uma lista de tarefas agendadas

Para ver uma lista de tarefas ativas e agendadas no seu sistema, insira o seguinte comando:

crontab -l

Se seu sistema tem vários usuários, você pode ver as listas de arquivos crontab deles inserindo o comando abaixo como superusuário:

crontab -u nome_de_usuário -l

Usando cron jobs para conceder acesso root a si mesmo

Devido às restrições de privilégio do usuário, alguns comandos só podem ser executados usando permissões de root. Para conceder a si mesmo privilégios de root, adicione sudo su no início do comando.

Por exemplo, você precisa de sudo su para executar um comando crontab que edita os trabalhos agendados de outros usuários:

sudo su crontab -u nome_de_usuário -e

Além disso, você pode adicionar tarefas cron ao diretório etc/cron.d para armazenar scripts de instalação e atualização automáticos. Para adicioná-los a este diretório, você deve ter acesso root e seguir as convenções de nomenclatura do run-parts.

Alternativamente, um usuário root pode mover seus scripts de tarefas cron para os seguintes diretórios para agendar sua execução:

  • /etc/cron.hourly/. Executa o script uma vez por hora.
  • /etc/cron.daily/. Executa uma vez por dia.
  • /etc/cron.weekly/. Executa uma vez por semana.
  • /etc/cron.monthly/. Executa uma vez por mês.

Usando um cron job para excluir tarefas agendadas

Para deletar todas as tarefas agendadas nas entradas do crontab e começar do zero, digite o seguinte comando:

crontab -r

Alternativamente, use o comando crontab -i . Ele é semelhante ao anterior, exceto que você receberá uma opção de confirmação antes de remover o crontab:

crontab -i

Conclusão

O daemon cron é um serviço, disponível em sistemas baseados no Unix, que permite criar scripts de automação para agendar tarefas. Enquanto isso, os cron jobs são as tarefas automatizadas criadas usando essa ferramenta — como atualizar, instalar ou monitorar um sistema ou banco de dados, aprimorando a segurança e a usabilidade.

Para automatizar tarefas, escreva o comando crontab no arquivo cron do seu sistema. O comando contém o script para execução e cinco asteriscos referentes ao horário de execução do cron job. Altere o valor desses asteriscos e use os operadores para modificar a periodicidade, a data e a hora dos processos.

Para executar um trabalho cron, conecte-se ao seu sistema operacional Linux usando o Terminal, um cliente SSH ou outro aplicativo CLI com permissão de root. Então, crie um arquivo crontab e adicione o script usando um editor de texto como o Nano. Você pode, inclusive, receber notificações de tarefas executadas por e-mail.

O que é cron job: perguntas frequentes

Nesta seção, vamos trazer a resposta de algumas perguntas frequentes sobre cron jobs para ajudar você a entender melhor a ferramenta.

O que um cron job faz?

Cron jobs são comandos Linux para automatizar tarefas repetitivas no painel de controle do seu servidor. Eles permitem que você agende tarefas para o seu sistema, como atualizar, instalar ou monitorar com um único comando.

O que são os asteriscos * * * * * no cron?

* * * * * é um coringa de expressão de agendamento cron, o que significa que seu trabalho cron deve ser executado a cada minuto, independentemente da hora, dia, data ou mês.

Como executar um cron job?

Faça login no seu servidor como usuário root via SSH usando o PuTTY, Terminal, ou o terminal do navegador integrado da Hostinger. Então, crie um arquivo usando o comando crontab -e. Escolha um editor para visualizar o arquivo e adicione seu script de tarefa cron ao arquivo crontab em branco. Salve o arquivo quando terminar, para habilitar a automação.

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.