Cron e crontab: tudo o que você precisa saber

  • Última atualização: 1 de fevereiro de 20191 de fevereiro de 2019 por
  • Redação

Cron e crontab trazem a solução para quem quer agendar tarefas e configurar a execução automática de scripts.

Seja para agendar a execução de um script em um serviço de hospedagem de sites, num servidor VPS com Linux ou até mesmo no seu computador pessoal, se você quer realizar uma tarefa periodicamente, saber como usar o cron pode ajudar você.

Cron e crontab - Como usar

Não tem tempo para executar um comando ou script manualmente manualmente? Basta agendar uma tarefa cron e ela será executada na data e horário que você escolher. Por exemplo, é possível agendar tarefas para serem executadas durante a madrugada, nos fins de semana, ou em datas específicas.

Dessa forma, usando cron e crontab, você não só consegue agendar tarefas para serem executadas uma única vez, como também torná-las recorrentes.

Neste artigo, você aprenderá mais sobre o funcionamento do cron e crontab, e como usar essas ferramentas para facilitar o agendamento de tarefas na sua hospedagem, servidor ou no seu próprio computador. Acompanhe!

O que é cron?

O cron é um utilitário de software desenvolvido para agendar tarefas em sistemas operacionais. O programa é bastante usado em sistemas onde é necessário configurar o agendamento de tarefas para serem executadas periodicamente. Isto é, a execução de comandos, scripts e programas de computador.

O que é cron e crontabVocê pode usar cron para agendar atividades, como eventos únicos ou tarefas recorrentes. Assim, você não precisa se preocupar em ficar executando a mesma ação várias vezes. Basta agendar a tarefa cron corretamente e ela será executada na data ou nos intervalos que você programar.

O nome cron vem da palavra grega "chronos", que significa "tempo". A primeira versão do programa teve origem no sistema operacional Unix, no fim dos anos 70 como um experimento de universidade.

Depois de diversas versões, o cron foi aprimorado, e hoje é incluído por padrão nos sistemas baseados em Unix, como as distribuições Linux, BSD e macOS.

Entre as implementações modernas, a versão mais popular utilizada é que foi originalmente criada por Paul Vixie, em 1987, e permanece sendo a principal versão distribuída até hoje.

Para que serve o cron?

Um caso de uso comum do cron é para realizar backups automáticos, configurando um script de realização de backup para ser executado periodicamente. Outra situação em que o uso do cron pode ser relevante é na renovação de certificados, você pode ver na prática como o cron é utilizado em nosso tutorial sobre certificado SSL grátis.

Alguns exemplos de sua utilização:

  • Atualizar DNS dinâmico periodicamente
  • Remover arquivos de registro do sistema
  • Mover arquivos de um diretório para outro
  • Enviar mensagens de e-mail recorrentes
  • Verificar links quebrados em um site

Resumindo, o cron pode ser usado para agendar a execução de uma tarefa para em uma determinada data ou intervalo.

O cron funciona como um serviço do sistema operacional, um daemon — um processo em segundo plano que está sempre em execução. Ele é executado no momento da inicialização do sistema, e permanece ativo para executar as tarefas cron ou cron jobs que forem configurados.

O que é uma tarefa cron (cron job)

Uma tarefa cron ou cron job (trabalho cron) é uma tarefa configurada para ser executada pelo cron. É a tarefa cron que informa ao serviço cron qual comando executar e quando. Uma tarefa cron é composta por 6 campos: minuto, hora, dia do mês, mês, dia da semana e o comando a ser executado:

CampoValores permitidos
Minuto0-59
Hora0-23
Dia do mês1-31
Mês1-12 (ou nome dos meses)
Dia da semana0-7 (ou nome dos dias)
ComandoComando a ser executado

Um campo também pode ter um asterisco (*), que significa que sempre será executado, do primeiro ao último. Os campos devem ficar na mesma linha e devem ser separados por tabs ou espaços. Outros caracteres que podem ser usados, são:

CaractereSignificadoExemploO que faz
*Do primeiro ao último* * * * *Executa a cada minuto
,Separa dígitos específicos1,2,3 * * * *Executa nos minutos 1, 2 3, a cada hora
-Define uma série de números* 4-12 * * * *Executa todo minuto das 4 as 12 horas
/Define a frequência de execução de acordo com uma variação30 2 */2 * *Executa o comando às 02h30 de dois em dois dias

No início, pode parecer um pouco confuso, mas com um pouco de prática fica fácil de entender como funciona. Para deixar mais claro, vamos ver na prática o formato de uma tarefa.

Exemplo de cron job

Veja o exemplo a seguir para entender melhor como é o formato de escrita de um cron job.

Vamos supor que você queira fazer o backup diário dos seus arquivos de hospedagem e tenha criado um script que faz o backup ao ser executado, um script.sh. Você pode criar uma tarefa cron para ser executar esse script diariamente às 2 horas da manhã:

0 2 * * * /bin/sh backup.sh

Para entender melhor esse exemplo, vamos ver o que cada parte do comando representa para a tarefa cron:

  • 0 - indica que o cron job será executado no minuto 0
  • 2 - indica que o cron job será executado na hora 2
  • * - indica que o cron job será executado do primeiro ao último dia do mês
  • * - indica que o cron job será executado do primeiro ao último mês.
  • * - indica que o cron job será executado do primeiro ao último dia da semana.
  • /bin/sh backup.sh - é o comando a ser executado pelo cron job, nesse caso, a execução de um script em shell.

Para facilitar ainda mais, existem alguns atalhos especiais para formatar o cron job:

Atalho especialSignificadoEquivale
@rebootExecuta somente uma vez na inicialização do sistema
@yearlyExecuta uma vez no ano0 0 1 1 *
@annuallyO mesmo que @yearly0 0 1 1 *
@monthlyExecuta uma vez por mês0 0 1 * *
@dailyExecuta uma vez por dia0 0 * * *
@midnightO mesmo que @daily0 0 * * *
@hourlyExecuta uma vez por hora0 * * * *

Além disso, você também pode agendar tarefas mais complexas definindo os dias da semana em que o cron job será executado ou até intervalos de tempo durante o dia. Para ajudar, existem ferramentas visuais para facilitar a criação dos cron jobs, como o Crontab Generator, Cron Maker e crontab.guru.

Cron - Crontab Generator (crontab.guru)

Usar um gerador de cron jobs como o crontab generator, ajuda a entender melhor como funciona essa ferramenta. Além de visualizar o significado de cada expressão da tarefa, é possível ver as datas em que o cron vai executar as tarefas e confirmar se o cron job está de acordo com o esperado.

Gerenciando cron jobs com crontab

Conhecendo a formato de um cron job, o próximo passo é saber como configurar a sua execução pelo cron. É nessa parte que entra o crontab, que permite o gerenciamento das tabelas em que ficam os cron jobs. Em outras palavras, a partir do crontab você consegue adicionar, remover, editar e listar os cron jobs.

Crontab Linux - Gerenciando cronAlém de facilitar o gerenciamento dos cron jobs, o crontab é muito útil para gerenciar as tarefas cron sem ter que modificar arquivos do sistema. Isso ocorre porque o crontab gerencia somente as tarefas cron do próprio usuário e não do sistema como um todo.

Se você quer gerenciar as tarefas cron de um servidor VPS ou uma hospedagem de sites, você pode fazer isso acessando o servidor via SSH e usando os comandos abaixo.

Embora cron seja mais utilizado em servidores, você também pode fazer isso a partir de um Terminal do seu sistema Linux ou macOS.

É muito fácil adicionar tarefas cron usando o crontab. Basicamente, existem 3 comandos que você precisa saber:

  • crontab -e - esse é o comando mais importante, usado para editar a tabela cron.
  • crontab -l - esse é o comando usado para listar a tabela cron e suas tarefas.
  • crontab -r - esse comando é usado para remover a tabela cron do usuário.

Ao usar o comando crontab -e, você vai receber a opção de selecionar um editor de texto para editar a tabela cron. Por padrão, é recomendado que você utilize o editor nano, que é um editor de texto com interface em terminal mais fácil de usar.

Crontab - Selecionando editor de texto

Dica: para mudar editor basta modificar ou remover o arquivo .selected_editor que está no diretório de usuário, ou digitar "export EDITOR="nome do editor que você quer usar" antes de usar o comando crontab -e.

Depois de selecionar o editor, você vai visualizar o arquivo com os cron jobs atuais. Se for a primeira vez que você estiver executando o comando, o arquivo vai apresentar as instruções de formato de um cron job, que vimos previamente.

Crontab - Primeiro acesso

Nota: as linhas que iniciam com "#" são somente instruções de uso do crontab e não comandos.

Agora, basta adicionar o cron job na última linha e salvar o arquivo para aplicar as modificações na crontab. Pronto, tarefa cron foi adicionada à crontab e será executada de acordo com a programação feita por você.

Nesse caso, foi adicionada a tarefa: 0 2 * * * script.sh, que vai executar o script.sh todos os dias às 2 horas. Cada linha representa uma tarefa, então a próxima tarefa deve ficar na linha seguinte.

Crontab - Adicionando expressão

Assim, essa ferramenta pode ajudar bastante quem está gerenciando os cron jobs em uma hospedagem compartilhada, em que não há acesso para modificar os arquivos do sistema. Quando criada com a crontab, a tabela com as tarefas cron é armazenada em /var/spool/cron/crontabs/usuário.

Na maioria dos casos, mesmo com acesso de administrador ao sistema, é recomendada a utilização do crontab. Se você quiser criar um cron job para ser executado como uma tarefa do sistema, é necessário modificar manualmente nos diretórios /etc/cron.d ou /etc/cron.{hourly|daily|weekly|monthly}, ou na tabela /etc/crontab.

Como configurar cron em hospedagem

Para quem não quer lidar com o gerenciamento dos cron jobs pela interface em terminal ou não tem acesso SSH, há a possibilidade de usar a ferramenta de cron do painel de hospedagem.

Como configurar tarefas cron no cPanel

O cPanel é o painel de controle de hospedagem mais popular do mercado, usado em diversos planos de hospedagem compartilhada e servidores VPS gerenciados. No cPanel, a opção de criação e gerenciamento dos cron jobs fica na opção "Trabalhos Cron".

Cron no cPanel

Aqui, há uma opção interessante no cPanel: de enviar uma mensagem de e-mail toda vez que um cron job for executado.

Cron enviando email

No resto, você poderá adicionar novos trabalhos cron com uma interface amigável na web, mas a lógica é a mesma de quando se utiliza o crontab.

Cron - Adicionar trabalho cron cPanel

Depois de adicionar a tarefa, o painel vai listar todas as tarefas abaixo, assim como a opção para removê-las ou editá-las:

Cron - Remover tarefa da crontab

O procedimento é o mesmo para qualquer hospedagem com cPanel, como HostGator, HostMídia ou GoDaddy.

Como configurar cron no painel Hostinger

A opção para gerenciamento de tarefas cron também deve estar presente em painéis personalizados, como no caso da Hostinger e WebLink.

Cron - Tarefas cron Hostinger

O procedimento é praticamente o mesmo, o que muda são as opções predefinidas e a interface do painel.

Cron - Gerenciando na Hostinger e WebLink

Esses passos valem tanto para Hostinger quanto a WebLink, que utilizam o mesmo painel.

Como configurar cron no painel UOL HOST

Na UOL HOST, a opção de para gerenciar cron é chamada de "Agendador de tarefas", mas o funcionamento é o mesmo.

Cron na UOL HOST

Aqui, a limitação está no tipo de script que pode ser executado. Diferente das outras empresas de hospedagem com, na UOL HOST não há opções avançadas para execução do script. Por exemplo, não há a possibilidade configurar um comando inteiro para execução, somente o script a ser executado.

Cron - Adicionar cron na UOL HOST

Por isso, caso seja necessário criar uma tarefa cron avançada na UOL HOST, é recomendada a utilização do crontab via SSH. Em outros provedores o procedimento é semelhante, em caso de dúvidas, consulte o suporte da hospedagem para instruções de como adicionar um cron job a partir do painel.

Resolvendo problemas do cron e crontab

Depois de adicionar a tarefa cron à tabela cron, é importante checar se ela está sendo executada conforme esperado. Por padrão, o crontab envia uma mensagem de e-mail com a saída do comando executado. Você pode definir o endereço de e-mail adicionando a seguinte linha no topo da tabela cron:

MAILTO="[email protected]"

Assim, a tabela ficaria da seguinte forma:

Crontab - MAILTO

No entanto, essa configuração só funciona se você tiver um servidor de e-mail no seu servidor ou computador. Como alternativa, você pode definir um arquivo de logs para registrar a saída dos comandos. Para fazer isso, basta adicionar adicionar o sufixo à tarefa:

0 3 * * * comando >> /arquivo/de/registros 2>&1

Nota: substitua o caminho '/arquivo/de/registros' com o caminho do arquivo em que você quer armazenar os registros.

Dessa forma, toda vez que uma tarefa for executada, um registro de sua saída será adicionada no arquivo que você especificar.

Um problema comum na utilização do crontab, ocorre devido às variáveis de ambiente usadas pelo cron, que são diferentes das do usuário.

Para contornar essa situação, basta adicionar as variáveis de ambiente modificadas no topo do arquivo da tabela. Por exemplo, se você quer que o cron use bash no lugar do sh, basta incluir a seguinte linha:

SHELL=/bin/bash

Outra forma de verificar os registros da execução do cron é verificando os logs de sistema. Se você está usando cron no Linux, você pode visualizar os registros no arquivo /var/log/syslog. Para facilitar a visualização dos registros, você pode usar o seguinte comando:

grep CRON /var/log/syslog

Vale a pena conferir também a variável do ambiente PATH, que também é diferente para o cron.

Conclusão

Pronto, agora você já sabe como agendar tarefas com cron no Linux usando o crontab. Saber como usar essas ferramentas é essencial para automatizar operações em sistemas Linux. Então, se você utiliza uma hospedagem de sites, utiliza Linux ou até mesmo macOS, conhecer o crontab é bastante válido.

Cron e crontab são ferramentas poderosas que podem poupar bastante tempo de trabalho. Por isso, experimente as ferramentas, use um gerador de cron e teste seus comandos. Mas não se esqueça de testar e verificar seus cron jobs antes de colocá-los no seu servidor.

Quer um um servidor Linux para executar tarefas automaticamente em qualquer momento do dia? Confira nosso ranking com os melhores provedores de servidor VPS e garanta o seu!

Melhor Hospedagem de Sites é um projeto com o objetivo de ajudar as pessoas a encontrarem o melhor provedor de hospedagem, trazendo informação e conhecimento sobre o universo de hospedagem de sites.

Deixe um comentário

    Receber novidades por email: