VPS

Cron Job: Guia Completo para Iniciantes 2019

imagem sobre o guia completo de cron job

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 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. A ideia é otimizar seu tempo e fazer com que você trabalhe com mais agilidade e autonomia.

O Que é Cron Job?

Cron é um programa utilitário responsável por executar uma tarefa repetidamente em algum tempo mais tarde. A ação de dar um comando para agendar uma tarefa para um tempo específico e de forma repetida é o que chamamos de Cron Job.

Aqui está como ele funciona: se você quer agendar uma tarefa para fazer mais tarde, você pode usar um outro comando como ele. Mas, para tarefas 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.

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 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. Se precisar de detalhes de como fazer isso, acesse o tutorial PuTTY SSH.

Abaixo estão algumas operações básicas que os Cron Jobs (Crontab Linux) podem fazer.

Se você quer editar um arquivo crontab do usuário atual, digite crontab -e no seu terminal.

comando crontab -e no terminal de comando

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 básicos de 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

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 1° for um sábado, o comando vai ser executado na segunda-feira (3°).
  • 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.  

11 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 dias (à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.

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.
  • $ crontab -u username -l — para visualizar a listagem de arquivos crontab de outros usuários.

Não apenas isso, entender os caracteres corretos vai ajudar você a definir a hora exata do agendamento pretendido. São eles:

  • Asterisco (*) — para definir todos os parâmetros.
  • Vírgula (,) — para mais de um tempo de execução de um único comando.
  • Hífen (-) — para definir o intervalo de tempo.
  • Barra inclinada (/) — para criar intervalos de tempo específicos dentro de um intervalo.
  • Last (L) — para especificar o último dia da semana.
  • Weekday (W) — para especificar o dia da semana mais próximo.
  • Hash (#) — para especificar o dia da semana usando uma variação de números.
  • Ponto de interrogação (?) — para deixar um espaço em branco.

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

Andrei L.

Andrei é jornalista e conteudista SEO 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.

Deixe um Comentário

Deixe seu comentário!

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Comece a Economizar Agora!

Hospedagem com tudo incluso e nome de domínio
R$2
29
/mês*