Crontab no Linux: EXEMPLOS de agendamento de tarefas

⚡ Resumo Inteligente

No Linux, o Crontab agenda a execução automática de comandos em horários, datas ou intervalos fixos, utilizando o daemon cron. Isso permite que administradores automatizem backups, limpeza de logs, notificações e manutenção rotineira do sistema sem intervenção manual.

  • ⏰ Daemon Cron: O processo em segundo plano cron lê os arquivos crontab e executa cada tarefa agendada exatamente no minuto definido.
  • 🗂️ Formato Crontab: Cinco campos de tempo — minuto, hora, dia do mês, mês e dia da semana — precedem o comando a ser executado.
  • ✍️ Vagas de edição: Use crontab -e para adicionar ou alterar tarefas, crontab -l para listá-las e crontab -r para removê-las.
  • 🔁 Cordas especiais: Atalhos como @reboot, @daily, @weekly e @hourly substituem os cinco campos de tempo para agendamentos comuns.
  • 📅 Exemplos práticos: As entradas pré-configuradas abrangem intervalos de cinco minutos, dias da semana específicos, execuções mensais e tarefas de inicialização.
  • 🤖 Assistência de IA: Assistentes de IA e o GitHub Copilot podem gerar e explicar expressões cron em segundos.

Crontab no agendamento de tarefas Linux com exemplos

Crontab, abreviação de tabela cron, é o arquivo de configuração e o comando que controla o cron. Linux Agendamento de tarefas. As seções abaixo explicam o formato do crontab, os comandos para adicionar, listar e remover tarefas, as strings especiais com o símbolo @ e exemplos de agendamento prontos para uso.

O que é crontab?

Cron tem seu nome derivado da palavra grega "Chronos", que significa tempo. É um processo do sistema (um daemon) que executa tarefas automaticamente em uma programação definida. Cron é um conjunto de comandos usado para executar tarefas agendadas regularmente. Crontab significa "tabela cron" e permite usar o agendador de tarefas cron para executar essas tarefas.

Crontab também é o nome do programa usado para editar esse agendamento. Ele é controlado por um arquivo crontab — um arquivo de configuração que lista os comandos do shell a serem executados periodicamente no horário especificado.

Por que usar tarefas cron?

Aqui estão os principais motivos para usar tarefas cron no Linux:

  • Realiza backups programados de arquivos de log ou bancos de dados.
  • Exclui arquivos de registro antigos automaticamente.
  • ArchiVes e limpa tabelas do banco de dados.
  • Envia e-mails de notificação, como boletins informativos ou lembretes de expiração de senha.
  • Executa a limpeza regular dos dados em cache.
  • Automatiza tarefas repetitivas em sistemas Unix e Linux.
  • Automatiza a manutenção rotineira do sistema.

Como usar o cron no Linux?

O pacote do sistema Linux inclui um agendador de tarefas útil chamado crontab. O crontab é popular porque permite agendar a execução de tarefas como usuário root, o que facilita alterações automatizadas no sistema. Basta alterar a tarefa uma vez e aguardar até que ela seja executada novamente conforme o agendamento.

Formato Crontab do Linux

Uma entrada no crontab do Linux possui seis campos. Os cinco primeiros campos definem a hora e a data de execução, e o sexto campo contém o comando a ser executado.

Sintaxe do Crontab:

[Minute] [hour] 
[Day_of_the_Month] 
[Month_of_the_Year] 
[Day_of_the_Week] 
[command]

O diagrama abaixo mapeia cada asterisco em uma entrada do crontab para o campo que ele controla, do minuto ao dia da semana, seguido pelo comando a ser executado.

Diagrama do formato crontab do Linux mostrando os cinco campos de tempo e o comando.

Os cinco campos de tempo aceitam os seguintes valores: minuto (0–59), hora (0–23), dia do mês (1–31), mês (1–12 ou jan–dez) e dia da semana (0–7, onde 0 e 7 significam domingo). Você controla cada campo com estes caracteres especiais:

  • Asterisco (*): Corresponde a todos os valores possíveis para esse campo.
  • Defina um intervalo: Use um hífen para definir um intervalo, como 1-10, 30-40, jan-mar ou seg-qua.
  • Defina vários intervalos: Use vírgulas para combinar intervalos, como abr-jun, out-dez.

Como adicionar/modificar o Crontab

Os usuários podem editar suas próprias tarefas crontab com o seguinte comando crontab. A opção -u direciona para o crontab de um usuário específico; portanto, forneça o nome de usuário, como mostrado nos exemplos posteriores:

$ crontab -u -e 

O comando acima abre a configuração crontab pessoal do seu sistema, que você pode editar no seu editor de texto padrão.

Não é necessário reiniciar o cron; ele detecta suas alterações automaticamente. Para visualizar suas tarefas atuais, use:

$ crontab -l

Para remover suas tarefas do crontab, use o seguinte comando:

$ crontab -r

Para adicionar ou atualizar uma tarefa no crontab, use o comando abaixo:

crontab -e

Para editar o crontab de outro usuário, especifique o usuário com a opção -u:

crontab -u username -e

Como listar o Crontab

Para visualizar as entradas do crontab do usuário atual:

crontab -l

Para visualizar as entradas do crontab de um usuário específico:

crontab -u username -l

Exemplos importantes do Crontab

Aqui estão alguns exemplos importantes e prontos para uso de agendamentos crontab:

Descrição Command
Executa as diversas tarefas de agendamento. O comando abaixo é executado às 7h e às 5h diariamente.
0 7,17 * * * /scripts/script.sh
Executa uma tarefa cron a cada 5 minutos.
*/5* * * * *  /scripts/script.sh
Executa a tarefa todos os dias Monday Às 5 da manhã. Isso é útil para tarefas semanais, como a limpeza do sistema.
0 5 * * mon  /scripts/script.sh
Executa seu script em intervalos de 3 minutos.
*/3 * * * * /scripts/monitor.sh
Agenda uma tarefa cron que será executada em meses específicos — neste caso, fevereiro, junho e setembro.
* * * feb,jun,sep *  /script/script.sh
Executa nos dias selecionados. Este exemplo executa a cada Monday e quarta-feira às 5h.
0 17 * * mon,wed  /script/script.sh
Permite que o cron seja executado no primeiro sábado de cada mês.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
Executa um script em intervalos de 6 horas, configurado conforme abaixo.
0 */6 * * * /scripts/script.sh
Agenda uma tarefa para ser executada duas vezes em Monday e terça-feira. Use as seguintes configurações para fazer isso.
0 4,17 * * mon,tue /scripts/script.sh
Agenda uma tarefa cron para ser executada a cada 15 segundos.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Agenda tarefas anualmente. @yearly é semelhante a “0 0 1 1 *”. Executa a tarefa uma vez por ano, à meia-noite do dia 1 de janeiro — útil para cumprimentos de Ano Novo.
@yearly /scripts/script.sh 
Executa tarefas mensalmente. @monthly é semelhante a “0 0 1 * *”. Executa a tarefa à meia-noite do primeiro dia de cada mês.
@monthly /scripts/script.sh
Executa várias tarefas usando uma única entrada cron.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Agenda tarefas semanalmente. @weekly é semelhante a “0 0 * * 0”. Executa tarefas semanais, como a limpeza do sistema, à meia-noite de todos os domingos.
@weekly /bin/script.sh
Agenda tarefas diariamente. @daily é semelhante a “0 0 * * *”. Executa a tarefa uma vez por dia, à meia-noite.
@daily /scripts/script.sh
Executa tarefas em intervalos de uma hora. @hourly é semelhante a “0 * * * *”. Executa a tarefa no início de cada hora.
@hourly /scripts/script.sh
Executa tarefas na reinicialização do sistema. @reboot é útil para tarefas que o sistema deve executar na inicialização, permitindo que os trabalhos em segundo plano sejam iniciados automaticamente.
@reboot /scripts/script.sh

Perguntas Frequentes

Os crontabs do usuário são armazenados em /var/spool/cron/ (ou /var/spool/cron/crontabs/ no Debian e Ubuntu), enquanto a programação global do sistema reside em /etc/crontab e no diretório /etc/cron.d. Sempre edite os crontabs do usuário com crontab -e em vez de abrir esses arquivos diretamente.

O Cron executa tarefas somente no horário exato agendado e as ignora se a máquina estiver desligada. Anacron tracO ks executa as tarefas perdidas assim que o sistema volta a funcionar, sendo, portanto, adequado para laptops e desktops que não estão sempre ligados.

O Cron utiliza um ambiente mínimo, portanto, um PATH limitado é a causa mais comum. Utilize caminhos absolutos para comandos e scripts, torne o script executável e redirecione a saída para um arquivo de log para que você possa capturar quaisquer erros para depuração.

Adicione >> /caminho/para/arquivo/de/log 2>&1 ao comando para capturar a saída padrão e os erros em um arquivo. Como alternativa, defina a variável MAILTO no início do crontab para que o cron envie a saída de cada tarefa para esse endereço de e-mail.

Os arquivos /etc/cron.allow e /etc/cron.deny controlam o acesso. Se o arquivo cron.allow existir, somente os usuários listados nele poderão usar o crontab. Se existir apenas o arquivo cron.deny, todos os usuários, exceto os listados, poderão agendar tarefas.

Um crontab de usuário criado com o comando `crontab -e` possui cinco campos de tempo seguidos pelo comando. O arquivo de sistema `/etc/crontab` adiciona um campo com o nome do usuário que executa a tarefa, contendo minuto, hora, dia, mês, dia da semana, usuário e, por fim, o comando.

Sim. As ferramentas de aprendizado de máquina podem estabelecer linhas de base para os tempos normais de execução e conclusão de tarefas e, em seguida, sinalizar anomalias, como tarefas que demoram muito para serem executadas, falham silenciosamente ou não cumprem o cronograma. A análise de logs por IA também agrupa erros relacionados para acelerar a identificação da causa raiz.

Sim. Travas deslizantes portáteis Copiloto do GitHub É possível gerar expressões cron a partir de um comentário em linguagem natural, explicar o que um agendamento como */5 * * * * faz e elaborar o script shell que uma tarefa executa. Sempre teste a expressão antes de adicioná-la a um crontab de produção.

Resuma esta postagem com: