Cron Job: Guia Completo para Iniciantes 2023

Sempre existem mais coisas que você pode fazer com muito mais praticidade. Gerenciar tarefas repetitivas usando um processo automatizado é algo que os webmasters têm preferência. Se você usa um sistema operacional tipo Unix, uma Cron Job pode poupar seu tempo executando uma tarefa automaticamente.

Neste artigo, vamos mostrar o básico de uma Cron Job e como usá-la para agendar tarefas.

O Básico de uma Cron Job

Basicamente, você pode criar e ditar uma Cron Job usando diferentes métodos. Neste tutorial, vamos mostrar como você pode fazer isso usando o Terminal do Linux.

Se você tiver uma servidor VPS na Hostinger, você pode encontrar suas credenciais de login na aba de gerenciamento da sua VPS. Assim, você consegue acessar seu servidor pelo SSH. A linha de comando do VPS pode ser acessada pelo PuTTY SSH ou pelo terminal baseado em navegador diretamente do hPanel:

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

Abaixo estão algumas operações básicas que os Cron Jobs podem fazer:

Se você quer editar um arquivo crontab do usuário atual, digite o seguinte comando no seu terminal.:

crontab -e

O resultado que você vai ter é algo como a figura abaixo.

resultado do comando crontab -e no terminal Linux

Como ele usa o vi editor, você pode aprender comandos vi para garantir que você faça as ações corretas.

Se você quer editar um crontab de outro usuário, você pode digitar crontab -u username -e. Tenha em mente que você só pode fazer isso como um superusuário. Isso significa que você precisa digitar sudu su antes de digitar o comando.

comando crontab -u username -e no terminal de comando

Se você quer remover o arquivo crontab atual do usuário atual, digite o seguinte comando:

crontab -r

Este é o mesmo que o -r. Contudo, ele oferece ao usuário uma opção de sim/não antes de remover o crontab:

crontab -i

Se você quer exibir os conteúdos do arquivo crontab no qual você está atualmente logado, digite o seguinte comando no terminal:

crontab -l

Outra operação permite que você veja se existe algum arquivo crontab já criado. Você pode simplesmente digitar crontab -l. Se não tiver nenhum, você vai ver este resultado abaixo.

exemplo do comando crontab -l no terminal do shell

Junto a isso, se você quer ver listas de arquivos crontab de outros usuários, você pode digitar crontab -u username -l como um superusuário.

exemplo do comando crontab -u username -l no terminal de comando do linux

Além de conhecer estas operações básicas, é importante que vocẽ aprenda a sintaxe básica também.

Sendo assim, saiba que um arquivo crontab consiste em duas partes: o temporizador de agendamento e o comando. É assim como o comando é escrito.

* * * * * /bin/sh backup.sh
  • O Cron Job ***** /bin/sh backup.sh significa que ele vai executar um backup a cada minuto.
  • 30 18***rm /home/sydtesting/tmp/* significa que ele vai remover os arquivos tmp de /home/sydtesting/tmp todos os dias às 18:30h.

Vamos ver alguns detalhes extras mais adiante.

Como Escrever uma Sintaxe Cron de Forma Correta

Como mencionamos antes, um arquivo crontab contém 5 campos – cada um é representado por um asterisco – que determinam a data e a hora que certa tarefa é programada para desempenhar repetidamente.

exemplo da sintaxe escrita de uma cron job
  • Minute (Minuto) – é o minuto da hora em que o comando vai rodar, variando de 0 a 59.
  • Hour (Hora) – é a hora em que o comando será executado, variando de 0 a 23.
  • Day of the month (Dia do mês) – é o dia do mês em que o comando vai rodar, variando de 1 a 31.
  • Month (Mês) – é o mês em que o comando será executado, variando de 1 a 12.
  • Day of the week (Dia da semana) – é o dia da semana que você quer que o comando rode, variando de 0 a 7.

Junto a isso, você precisa usar caracteres apropriados em cada arquivo crontab.

  • Asterisco (*) – define todos os parâmetros de agendamento.
  • Vírgula (,) – mantém duas ou mais horas de execução em um único comando.
  • Hífen (-) – determina o intervalo da hora ao definir vários tempos de execução de único comando.
  • Barra inclinada (/) – cria intervalos pré-determinados de tempo dentro de um intervalo de tempo específico.
  • Last (L) – tem o propósito específico de determinar o último dia da semana do mês respectivo. Por exemplo, 3L significa a última quarta-feira.
  • Weekday (W) – determina o dia da semana mais próximo de um tempo dado. Por exemplo, 1W significa se o for um sábado, o comando vai ser executado na segunda-feira ().
  • Hash (#) – para determinar o dia da semana, seguido por um número que varia de 1 a 5. Por exemplo, 1#2 significa a segunda segunda-feira.
  • Ponto de interrogação (?) – serve para deixar um espaço.  

12 Exemplos de Sintaxe Cron

Agora que você aprendeu como escrever uma sintaxe cron corretamente, vamos mostrar mais exemplos para ajudar você a entender melhor as regras acima.

Antes de continuar, tenha em mente que a saída do comando vai automaticamente ser enviada para sua conta de email local. Então, se você quer parar de receber esses emails, você pode adicionar >/dev/null 2>&1 à sintaxe. Como no exemplo:

0 5 * * * /root/backup.sh >/dev/null 2>&1

Além disso, se você quer receber a saída de email em uma conta específica, então você pode adicionar MAILTO, seguido do endereço de email. Aqui está um exemplo:

MAILTO="myname@hostinger.com"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Abaixo estão mais alguns exemplos de sintaxe Cron:

ExpressãoSignificado
0 0 * * * /bin/sh backup.shFazer um backup de banco de dados à meia noite de cada dia.
0 6,18 * * * /bin/sh backup.shFazer um backup de banco de dados duas vezes por dia (às 6 da manhã e às 18h da tarde).
0 */6 * * * /scripts/monitor.shPara fazer monitoramentos a cada 6 horas.
*/10 * * * * /home/user/script.shPara executar uma tarefa cron para o arquivo do script localizado no diretório home a cada 10 minutos.
0 * 20 7 * /bin/sh backup.shPara executar um backup de banco de dados a cada hora em 20 de julho.
0 0 * * 2 * /bin/shPara executar um backup de banco de dados à meia noite de toda terça-feira.
* * * 1,2,5 *  /script/script.shPara executar um comando em Janeiro, Fevereiro e Maio.
10-59/5 5 * * * /home/user/script.shPara executar um comando a cada 5 minutos às 5:00h da manhã, começando às 5:10h.
0 8 1 */3 * /home/user/script.shPara executar um comando trimestralmente no primeiro dia às 8:00h da manhã.
* * * * * /scripts/script.sh; /scripts/scrit2.shPara definir uma agenda para tarefas múltiplas em um único Cron Job.
@reboot /scripts/script.shPara executar uma certa tarefa toda vez que você inicia o sistema.
0 0 1 * * /home/user/script.shPara executar um comando no primeiro dia de cada mês.

Permissões Cron

Dois arquivos possuem um papel importante quando se trata de cron jobs.

  • /etc/cron.allow –se o cron.allow existe, ele deve contar o nome do usuário para o usuário utilizar cron jobs.
  • /etc/cron.deny – se o arquivo cron.allow não existe, mas o arquivos cron.deny existe, então para usar cron jobs o usuário não deve estar listado no arquivo cron.deny.

O Que é Cron Job?

Cron é um programa de utilidade para repetir tarefas numa data futura. Dar um comando que agenda uma tarefa, em um horário específico, repetidamente é um cron job.

Se você quer agendar um job uma única vez, você pode querer usar outro comando. Mas, para jobs recorrentes, o cron é a solução perfeita.

O Cron é um daemon. Isso significa que ele trabalha em plano de fundo para executar tarefas não-interativas. No Windows, você pode estar mais familiarizados com processos em plano de fundo com os Serviços.   

Um daemon está sempre no status ocioso e aguarda uma solicitação de um comando para desempenhar uma certa tarefa. Essa tarefa pode ser tanto de dentro do computador principal quanto de qualquer outra máquina conectada à mesma rede.

Um arquivo Cron é sempre um arquivo de texto que contém comandos para rodar em uma hora específica. O sistema padrão do arquivo contab é /etc/crontab e ele fica localizado dentro do diretório crontab, que é /etc/cron.*/. Apenas administradores podem editar um arquivo crontab do sistema.

Porém, como os sistemas operacionais Unix têm suporte a múltiplos usuários, cada um pode criar seu próprio arquivo crontab e lançar comandos para executar tarefas em qualquer hora que eles quiserem. Um daemon Cron vai verificar o arquivo e rodar o comando no plano de fundo do sistema.

Com Cron Jobs, você pode automatizar a manutenção do sistema, fazer o monitoramento do espaço de disco, e agendar backups. Por conta da sua natureza, os Cron Jobs são excelentes para computadores que trabalham todos os dias e horas da semana – um servidor.

Só se atenha ao fato de que os Cron jobs são mais usados por administradores de sistemas, sendo também bastante úteis para desenvolvedores. Por exemplo, para desativar uma conta expirada, checar links quebrados ou até mesmo enviar newsletters para usuários específicos.

Conclusão

Definir uma tarefa agendada automaticamente não apenas é prático, como também previne que você esqueça de realizá-la por descuido.

O Cron Job é uma ótima maneira de gerenciar certas tarefas tanto como um administrador de tarefas como um desenvolvedor. Tudo o que você precisa fazer é usar o comando certo e escolher a hora certa.

Aqui vão alguns comandos básicos:

  • $ crontab -e — para criar e editar um arquivo crontbab.
  • $ crontab -u username -e — para editar arquivo crontab de outro usuário com um acesso de superusuário.
  • $ crontab -l — para visualizar uma lista de arquivos crontab dos usuários atuais.
  • $ contrab -r — para remover os arquivos contrab.
  • $ crontab -a nomedoarquivo — para instalar nomedoarquivo como um arquivo contrab (em alguns sistemas, -a não é necessário).

Então, agora, deixe que a automação de comando faça tudo por você e na hora que você quiser!

Author
O autor

Andrei L.

Jornalista e conteudista SEO/Localização na Hostinger Brasil. Tem experiência em WordPress e na produção de conteúdos de tecnologia otimizados para conquistar as melhores posições no Google. É fã de games, adora vôlei, ama o inverno e está sempre buscando se aperfeiçoar no Inglês.