Tamanho de fonte
Alto contraste
Altura de linha
Entrar Cadastrar
cron no linux

Cron no Linux: como agendar tarefas automáticas com Python

Avatar de Carolina Carvalho Carolina Carvalho
15 minutos de leitura 26/06/2025 • Atualizado 2 dias atrás 5xp

O Cron no Linux é a ferramenta ideal para automatizar tarefas nesse sistema operacional. Com ele, você pode programar a execução automática de comandos, scripts ou aplicativos em horários definidos.

E você ainda pode combinar essa solução com Python para criar automações ainda mais avançadas, como processamento de dados, integração com APIs e envio de relatórios.

Neste artigo, você vai entender como o Cron funciona, aprender a usá-lo com scripts Python e conhecer boas práticas para deixar suas automações no Linux ainda mais eficientes.

O que é o Cron no Linux? 

Cron é o agendador de tarefas padrão do Linux. Ele permite executar comandos, scripts e programas automaticamente em horários pré-definidos. Na prática, ele funciona como um “assistente virtual”, rodando tarefas repetitivas sem necessidade de intervenção manual.

Por isso, você pode utilizá-lo para automatizar processos como backups, atualizações de dados e manutenção do sistema.

Essas tarefas automatizadas são chamadas de cronjobs (ou tarefas Cron) e são configuradas por meio de um arquivo especial chamado crontab, uma abreviação de cron table (tabela do cron). 

Você define na tabela quando a tarefa será executada (minuto, hora, dia, mês e dia da semana) e qual comando ou script deve ser rodado. Por trás de tudo isso, quem gerencia a execução das tarefas é o daemon do sistema chamado crond, que roda em segundo plano e verifica constantemente a tabela de agendamentos.

Para que serve o Cron?

O Cron serve para automatizar tarefas recorrentes no sistema Linux. Por isso, administradores e desenvolvedores o utilizam em diversas atividades, como arquivamento automático de logs, verificação da integridade do sistema e atualizações periódicas em bancos de dados.

Você também pode combiná-lo com scripts Python para executar tarefas como scraping, processos ETL (Extração, Transformação e Carregamento), limpeza de diretórios, envio de e-mails ou geração de relatórios em horários programados.

Todo esse agendamento é feito por meio do crontab, o arquivo de configuração que registra as tarefas. Tanto o sistema quanto os usuários possuem seus próprios arquivos crontab.

O arquivo principal do sistema, localizado em /etc/crontab, gerencia as tarefas globais que afetam toda a máquina. Já os arquivos individuais dos usuários ficam armazenados no diretório /var/spool/cron/

Nesse caso, eles são identificados pelo nome de cada usuário, contendo assim suas configurações pessoais de agendamento de tarefas. 

Por conta dessas e de outras aplicações, ele é fundamental para o trabalho do profissional de dados.

Como funciona o agendamento com o Cron?

O agendamento de tarefas com o Cron acontece por meio de expressões específicas, que indicam exatamente quando um comando ou script deve ser executado. Essas instruções ficam registradas na crontab e quem se encarrega de executá-las no momento certo é o daemon do Cron.

Cada linha da crontab segue uma estrutura com cinco campos numéricos, os quais representam:

  • Minuto (0–59);
  • Hora (0–23, formato 24h);
  • Dia do mês (1–31);
  • Mês (1–12);
  • Dia da semana (0–6, sendo 0 = domingo e 6 = sábado; o valor 7 também pode ser usado para domingo).

Após esses campos, vem o comando ou script que será executado.

Na prática, a sintaxe básica do Cron é a seguinte:

*    *    *    *    *    comando-a-executar
│    │    │    │    │
│    │    │    │    └─ Dia da semana (0 a 6 | domingo = 0)
│    │    │    └────── Mês (1 a 12)
│    │    └────────── Dia do mês (1 a 31)
│    └────────────── Hora (0 a 23)
└─────────────────── Minuto (0 a 59)

O símbolo * significa “todos os valores possíveis” para aquele campo. Por exemplo, um asterisco no campo de minutos significa “a cada minuto”. Com isso, você pode configurar desde tarefas simples, como rodar um script todo dia às 8h, até agendamentos mais sofisticados e específicos.

Você também pode usar operadores especiais para criar agendamentos mais personalizados:

  • O hífen (-) define intervalos, por exemplo: 1-5 para segunda a sexta;
  • A vírgula (,) permite listar valores, por exemplo: 1,3,5 para segunda, quarta e sexta;
  • A barra (/) define passos, por exemplo: */15 para “a cada 15 minutos”.

Exemplos práticos de agendamento com Cron

Agora que você já entendeu como funciona o agendamento com Cron no Linux, veja alguns exemplos práticos de como usar essa funcionalidade no dia a dia.

Executar um script Python todos os dias às 8h da manhã 

Vamos supor que você tenha um script chamado coleta_dados.py, responsável por buscar dados de uma API e salvar as informações em um arquivo CSV. Se quiser executá-lo automaticamente todos os dias às 8h, você pode usar o Cron com o seguinte comando:

0 8 * * * /usr/bin/python3 /home/seu_usuario/scripts/coleta_dados.py

Entenda o que cada parte dessa linha significa:

  • 0 → Minuto: o script será executado no minuto zero;
  • 8 → Hora: às 8h da manhã;
  • * → Dia do mês: qualquer dia;
  • * → Mês: qualquer mês;
  • * → Dia da semana: qualquer dia da semana (de domingo a sábado).

Essa combinação significa: “todos os dias, às 08:00 da manhã, execute a coleta de dados”.

Rodar uma limpeza de diretório a cada hora

Suponha que você tenha um script chamado limpeza_temp.py, responsável por apagar arquivos temporários de uma pasta, e que ele precisa ser executado de hora em hora. Nesse caso, o comando no Cron seria:

0 * * * * /usr/bin/python3 /home/seu_usuario/scripts/limpeza_temp.py

Entenda o que cada parte dessa linha significa: 

  • 0Minuto: a tarefa será executada no minuto 0;
  • *Hora: todas as horas;
  • * Dia do mês: todos os dias;
  • *Mês: todos os meses;
  • *Dia da semana: qualquer dia da semana.

Ou seja, essa linha significa “execute a limpeza de arquivos temporários a cada hora, sempre no minuto zero, todos os dias.”.

Gerar e enviar um relatório por e-mail toda segunda-feira às 9h 

Agora, vamos supor que você criou um script chamado relatorio_semana.py que gera um relatório semanal e envia por e-mail. Para programá-lo com o Cron, use o seguinte comando:

0 9 * * 1 /usr/bin/python3 /home/seu_usuario/scripts/relatorio_semana.py

Entenda o que cada parte dessa linha significa: 

  • 0Minuto: o script será executado no minuto 0;
  • 9 Hora: às 9h da manhã;
  • *Dia do mês: qualquer dia;
  • *Mês: qualquer mês;
  • 1Dia da semana: segunda-feira.

Isso significa que o script será executado “toda segunda-feira, às 09:00 da manhã”.

Como verificar se o Cron está ativo?

O serviço do Cron deve estar ativo para que os agendamentos funcionem. Por esse motivo, antes de utilizá-lo, você precisa confirmar se ele está em execução. Para isso, use os seguintes comandos:

ps aux | grep cron            # Verifica se o daemon está rodando
sudo systemctl enable cron    # Garante que o serviço inicie automaticamente

Se o Cron ainda não estiver instalado, você pode instalá-lo no Ubuntu com o comando:

sudo apt update && sudo apt install cron

Depois da instalação, ative o serviço com:

sudo systemctl enable cron

Por fim, confirme que está rodando novamente com o comando ps.

Como criar um cronjob no Linux com Python?

Criar um cronjob no Linux é um processo simples, mas você precisa prestar atenção a alguns detalhes importantes para que o script Python seja executado corretamente. Para isso, siga o passo a passo abaixo:

1. Abra o terminal

O primeiro passo é abrir o terminal, a principal interface para programação no Linux. Você pode acessá-lo procurando por “Terminal” nos aplicativos ou usando o atalho Ctrl + Alt + T.

2. Acesse o contrab

O próximo passo é acessar o crontab, o arquivo onde são definidas as tarefas agendadas. Para editá-lo, use o comando:

crontab -e

Se for sua primeira vez acessando, o sistema pedirá que você escolha um editor de texto, como nano ou vim. Depois disso, o sistema interpreta qualquer linha que você adicionar como uma instrução de agendamento.

3. Escreva a tarefa

Após definir os campos de tempo, você deve adicionar o comando que será executado. Para rodar um script Python, utilize a chamada direta do interpretador, como neste exemplo:

0 8 * * * /usr/bin/python3 /home/seu_usuario/scripts/relatorio.py

Esse comando executará o script relatorio.py todos os dias às 8h da manhã. 

4. Salve e saia

Depois de escrever a tarefa, salve e feche o arquivo. No nano, por exemplo, você faz isso com Ctrl + X, depois Y para confirmar e Enter para sair.

Exemplo prático: automatizando um script que salva o preço do Bitcoin

A melhor forma de aprender é praticando! Por isso, vamos criar um pequeno script que coleta o preço atual do Bitcoin em dólares e salva essa informação em um arquivo de texto. Em seguida, vamos agendá-lo com o Cron para ser executado a cada hora.

Vamos lá?

1. Crie o script Python

Antes de agendar qualquer tarefa com o Cron, você precisa ter um script Python funcional. Você pode criar esse script em qualquer pasta que desejar, mas vamos usar como exemplo o caminho /home/seu_usuario/scripts.

Em seguida, você deve criar um novo arquivo chamado btc_preco.py com o seguinte conteúdo:

#!/usr/bin/env python3
import requests
from datetime import datetime

url = "https://api.coindesk.com/v1/bpi/currentprice/BTC.json"
res = requests.get(url)
data = res.json()
preco = data["bpi"]["USD"]["rate"]

with open("/home/seu_usuario/scripts/btc_log.txt", "a") as log:
    log.write(f"{datetime.now()} - Preço do BTC: ${preco}\n")

O que esse script faz?

  • Lê a cotação atual do Bitcoin: acessa a API pública da CoinDesk, um serviço gratuito que retorna o preço do Bitcoin em tempo real no formato JSON;
  • Extrai o valor do Bitcoin em dólares (USD): usa a biblioteca requests para obter a resposta e o método .json() para convertê-la em um dicionário Python. Depois, acessa o campo ["bpi"]["USD"]["rate"] para obter o preço;
  • Grava a informação em um arquivo de log: com o comando with open(..., "a"), o script abre (ou cria) o arquivo btc_log.txt no modo de adição. 

A cada execução, o script adiciona uma nova linha com a data e hora atual, junto ao preço do Bitcoin. Por exemplo:

2025-06-23 14:00:01.123456 - Preço do BTC: $65,432.10

Com o tempo, o arquivo acumula os registros, que podem ser usados para análises, criação de gráficos de variação de preço, envio de alertas e muito mais.

2. Agende o script com o Cron

Agora que você já criou o script btc_preco.py, você deve fazer com que ele seja executado automaticamente a cada hora. Para isso, abra o terminal com o comando:

crontab -e

Em seguida, adicione a seguinte linha no final do arquivo:

0 * * * * /usr/bin/python3 /home/seu_usuario/scripts/btc_preco.py >> /home/seu_usuario/scripts/btc_cron.log 2>&1

Entenda o que essa linha significa:

  • 0 * * * * → executa o script no minuto 0 de todas as horas;
  • /usr/bin/python3 → caminho do Python 3 (você pode confirmar com which python3);
  • /home/seu_usuario/scripts/btc_preco.py → caminho absoluto do seu script;
  •  >> ... 2>&1 → redireciona a saída padrão e os erros para um arquivo btc_cron.log, o que ajuda a monitorar se a execução ocorreu corretamente.

3. Salve o agendamento

Depois de escrever a tarefa no crontab, salve o arquivo e saia do editor. No nano, por exemplo, use o atalho Ctrl + X, depois pressione Y para confirmar e Enter para sair.

4. Confirme se o agendamento foi salvo

Para verificar todos os cronjobs ativos do seu usuário, use o comando:

crontab -l

5. Teste se está funcionando

Agora é só aguardar até o próximo horário cheio (por exemplo, 15h, 16h…) e conferir se:

  • O arquivo btc_log.txt foi atualizado com uma nova linha contendo a cotação;
  • O arquivo btc_cron.log contém a saída da execução do script ou está em branco (o que também indica sucesso, se não houve erros nem print() no script).

Se quiser testar manualmente, execute:

python3 /home/seu_usuario/scripts/btc_preco.py

Boas práticas ao usar Python com Cron no Linux

Aprender a automatizar tarefas com Cron é uma habilidade valiosa. Porém, para que tudo funcione de forma segura, confiável e escalável, você precisa seguir algumas boas práticas que ajudam a evitar erros, falhas em cadeia ou tarefas duplicadas.

Confira a seguir os principais cuidados que você deve adotar nos seus projetos:

Use caminhos absolutos para tudo

O Cron não reconhece variáveis de ambiente como $HOME ou ~. Por isso, sempre utilize caminhos absolutos para:

  • Scripts Python: /home/seu_usuario/scripts/script.py
  • Interpretador: /usr/bin/python3
  • Arquivos de log e pastas de saída

Isso evita erros como “arquivo não encontrado”, que não aparecem no terminal, mas podem comprometer a execução da tarefa.

Redirecione a saída e os erros para arquivos de log

Como o Cron roda em segundo plano, ele não exibe mensagens de erro na tela. Para monitorar o que está acontecendo, adicione ao final do cronjob:

>> /caminho/do/arquivo.log 2>&1

Nessa linha, >> redireciona a saída padrão e 2>&1 redireciona os erros para os mesmos arquivos. O script grava tudo o que imprimir no arquivo de log, o que facilita a identificação de problemas.

Garanta que o script tenha permissão de execução

Mesmo que você use python3 script.py, é importante garantir que seu script tem permissão de execução. Para isso, use o comando:

chmod +x seu_script.py

Se quiser rodar o script diretamente (sem escrever python3 no agendamento), adicione no topo do arquivo a linha shebang:

#!/usr/bin/env python3

Isso permite rodar o script diretamente, como:

./seu_script.py

Evite sobreposição de execuções com flock

Se o seu script demora para rodar e o Cron tenta executá-lo de novo antes da finalização da rodada anterior, isso pode gerar execuções simultâneas. Para evitar esse problema, use o utilitário flock:

* * * * * flock -n /tmp/lock.nome_do_script.lock /usr/bin/python3 /caminho/seu_script.py

Esse comando impede que dois processos rodem ao mesmo tempo.

Teste o script manualmente antes de agendar

Antes de adicionar qualquer tarefa ao Cron, execute o script no terminal:

python3 /caminho/seu_script.py

Se ele apresentar erros manualmente, também falhará no Cron. Esse teste simples ajuda a identificar problemas como bibliotecas ausentes, erros de digitação ou caminhos incorretos.

Monitore tarefas importantes com ferramentas externas

Caso você esteja agendando tarefas importantes ou complexas, vale a pena utilizar ferramentas externas para monitorar sua execução, como Cronitor e Healthchecks.io

Você recebe alertas ou notificações dessas plataformas por e-mail sempre que o script falha ou deixa de ser executado, te ajudando a identificar problemas rapidamente.

Como começar a automatizar tarefas com Python e Cron no Linux?

Automatizar tarefas com Cron no Linux é uma das melhores estratégias para ganhar produtividade, economizar tempo e evitar erros manuais em processos repetitivos. E tudo isso fica muito mais fácil se você usa Python, uma das linguagens mais amigáveis para quem está começando a programar.

Para te ajudar a dar os primeiros passos na programação e aprender a automatizar seus próprios scripts com segurança, a Asimov Academy criou o curso gratuito Python para iniciantes.

Nesse curso, você vai aprender Python do jeito certo, com foco em projetos práticos e aplicáveis, mesmo que você nunca tenha programado antes. 

É a oportunidade perfeita para sair do zero e começar a criar suas próprias automações.

Inscreva-se agora e comece a transformar o seu futuro!

Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

30xp
Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov