Quando usar outro agendador em vez do crontab
O crontab foi por décadas o padrão de agendamento no Unix, mas hoje há muitas alternativas que você pode escolher conforme o objetivo. O ponto importante é que a própria expressão de agendamento usa, na maioria dos casos, a mesma sintaxe cron de 5 campos. Portanto, seja qual for a plataforma, você pode validar a expressão primeiro com esta ferramenta.
Os timers do systemd são a alternativa padrão no Linux moderno. Diferente do cron, você pode ver os logs de execução diretamente com journalctl, gerenciar dependências com unidades de serviço e usar a opção Persistent=true, que executa após a inicialização as tarefas perdidas enquanto o sistema estava desligado. Porém, a notação de tempo não é a sintaxe cron, e sim o formato OnCalendar, que precisa ser aprendido à parte.
Os agendadores em nuvem e serverless são populares em ambientes gerenciados. AWS EventBridge Scheduler, GCP Cloud Scheduler, Vercel Cron, Cloudflare Cron Triggers e outros aceitam, na maioria, expressões cron padrão diretamente e dispensam a administração de um servidor. Contudo, é preciso sempre verificar que o fuso horário de referência para a execução costuma ser o UTC.
Os agendamentos de pipeline de CI também são bastante usados. O on: schedule do GitHub Actions ou os agendamentos de pipeline do GitLab CI são adequados para executar periodicamente tarefas do repositório (testes, deploys, relatórios). Usam a sintaxe cron, mas com base no UTC, e, devido à espera por um runner, podem atrasar alguns minutos em relação ao horário exato.
O critério de escolha é simples. Para uma tarefa que roda em um único servidor Linux, use cron ou timers do systemd; se quiser executar de forma gerenciada sem servidor, um agendador em nuvem; para tarefas ligadas a um repositório, um agendamento de CI é o mais natural. Em qualquer caso, verifique os próximos horários de execução da string de agendamento com este interpretador antes de colá-la.