Docs/ Operações/ Cron Jobs

Cron Jobs

Agende tarefas recorrentes que rodam dentro dos seus contêineres. De limpezas de banco de dados a geração de relatórios, cron jobs automatizam operações repetitivas em um agendamento definido.

Criando um Cron Job

Cron jobs são criados no nível do serviço. Cada job executa um comando dentro do contêiner em execução do serviço.

  1. Navegue até seu serviço dentro da sua stack.
  2. Clique na aba Cron Jobs.
  3. Clique em Adicionar Cron Job.
  4. Insira um nome descritivo (ex.: "Limpeza diária do banco de dados").
  5. Insira a expressão cron para o agendamento.
  6. Insira o comando a ser executado (ex.: python manage.py cleanup).
  7. Clique em Criar.
Create cron job dialog -- name field, cron expression input with a human-readable preview, and command input
Note
O comando roda dentro do mesmo contêiner do seu serviço, usando as mesmas variáveis de ambiente, sistema de arquivos e rede. Isso significa que ele pode acessar seu banco de dados, arquivos de configuração e código da aplicação.

Sintaxe de Expressão Cron

O sh0 usa expressões cron padrão de 5 campos. Cada campo representa uma unidade de tempo:

Cron expression format
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday = 0)
│ │ │ │ │
* * * * *
SímboloSignificadoExemplo
*Todo valor* * * * * = a cada minuto
,Lista de valores0 8,12,18 * * * = 8h, 12h, 18h
-Intervalo0 9-17 * * * = a cada hora das 9h às 17h
/Passo*/15 * * * * = a cada 15 minutos

Padrões Comuns

Frequently used cron schedules
# Every minute
* * * * *

# Every 5 minutes
*/5 * * * *

# Every hour at minute 0
0 * * * *

# Every day at midnight
0 0 * * *

# Every day at 3:30 AM
30 3 * * *

# Every Monday at 9:00 AM
0 9 * * 1

# First day of every month at midnight
0 0 1 * *

# Every weekday (Mon-Fri) at 6:00 AM
0 6 * * 1-5
Tip
Quando você digita uma expressão cron, o sh0 mostra um preview legível como "Todo dia às 3:30" para que você possa verificar antes de salvar.

Selecionando o Contêiner Alvo

Quando um serviço tem múltiplas réplicas, você precisa decidir qual contêiner executa o cron job. O sh0 oferece dois modos de execução:

  • Instância única (padrão) -- O job roda em apenas um contêiner, evitando execução duplicada. Esta é a escolha certa para migrações de banco de dados, geração de relatórios ou qualquer tarefa que não deve rodar simultaneamente.
  • Todas as instâncias -- O job roda em cada réplica. Use para aquecimento de cache, limpeza de arquivos locais ou tarefas que precisam rodar em cada instância.
Execution mode selector -- radio buttons for 'Single instance' and 'All instances' with descriptions

Histórico de Execução e Logs

Cada execução de cron job é registrada com seu horário de início, horário de término, código de saída e saída. Visualize o histórico de execução na página de detalhes do cron job.

Cron job execution history table -- showing timestamps, duration, exit codes (0 for success, non-zero for failure), and output preview

Clique em qualquer execução para ver a saída completa de stdout e stderr. Isso é inestimável para depurar jobs com falha ou verificar se uma tarefa foi concluída corretamente.

Cron job execution detail -- showing full command output with stdout and stderr streams
Note
O sh0 retém as últimas 100 execuções por cron job. Entradas mais antigas são automaticamente removidas para manter o banco de dados enxuto.

Habilitando e Desabilitando Jobs

Você pode desabilitar temporariamente um cron job sem excluí-lo. Isso é útil durante janelas de manutenção ou ao depurar um problema causado por uma tarefa agendada.

  • Ative o botão Habilitado no cartão do cron job para desabilitar ou reabilitar.
  • Jobs desabilitados mantêm sua configuração e histórico -- nada é perdido.
  • Você também pode acionar uma execução manual clicando em Executar Agora, independentemente do agendamento.
Cron job card with enabled/disabled toggle and a Run Now button

Tratamento de Erros e Retentativas

Quando um cron job sai com um código de status diferente de zero, o sh0 marca a execução como falha. Você pode configurar retentativas automáticas e notificações de falha:

  • Retentativas -- Defina o número de tentativas de retentativa (0-5) e o intervalo entre retentativas.
  • Timeout -- Defina um tempo máximo de execução. Jobs que excedem esse limite são encerrados.
  • Alertas de falha -- Configure alertas para ser notificado quando um job falhar. Funciona com os mesmos canais de notificação dos alertas de métricas.
Warning
Se um cron job ainda está em execução quando a próxima execução agendada chega, o sh0 pula a nova execução para evitar sobreposição. A execução pulada é registrada com status "Pulada (sobreposição)".