Pular para o conteúdo

Conversor de Cron para systemd · Agendamento

Migre uma linha de crontab para um temporizador do systemd.

Cole uma única entrada de crontab para gerar um par systemd .timer e .service com uma expressão OnCalendar= e notas de migração — grátis, online, sem cadastro.

Roda no seu navegador Sem cadastro Grátis e aberto Atualizado em 28 de jul. de 2026

Ambiente de testes do Conversor de Cron para systemd

Base name for the generated .timer and .service units. Optional.
crontab

Tip: press Esc to release focus.

OnCalendar
timer.timer
service.service
Notes

Paste a crontab line, then convert to see the equivalent systemd .timer and .service units, plus any migration notes here.

A lacuna

systemd é o novo crontab.

As distribuições Linux modernas agendam trabalhos com temporizadores do systemd, e muitas já nem sequer incluem um daemon de cron por usuário. Os temporizadores oferecem registro no journald, ordenação de dependências, limites de recursos, repetições e Persistent=true para as execuções perdidas — coisas que uma simples linha de crontab não consegue expressar.

Mas a sintaxe não é familiar, e reescrever um agendamento à mão em OnCalendar= em dois arquivos de unidade é trabalhoso e fácil de errar sutilmente. Este conversor faz a parte mecânica para você — cole uma linha de crontab para migrá-la para unidades de temporizador do systemd em segundos — e aponta o punhado de comportamentos — ambiente, MAILTO, diretório de trabalho — que não se traduzem um para um, de modo que a migração seja honesta em vez de silenciosa.

Precisa ler primeiro o lado do cron? Experimente o Testador de expressões Cron, depois converta-a aqui — ou vá direto ao ambiente de testes ao vivo acima.

O processo

Como funciona.

Cinco passos determinísticos transformam uma linha de crontab em um par de unidades instaláveis — tudo dentro da aba do seu navegador, sempre.

  1. Analisa a linha.

    Sua entrada de crontab é dividida nos cinco campos de tempo (ou um @macro) e no comando que vem a seguir.

  2. Monta o OnCalendar.

    Os campos de tempo são reescritos em uma expressão de calendário OnCalendar= do systemd, incluindo listas e passos.

  3. Emite as unidades.

    Um .timer que carrega o agendamento e um .service que envolve o seu comando são gerados como um par combinado.

  4. Sinaliza as lacunas.

    Qualquer coisa que o cron faça e que o systemd trate de forma diferente — ambiente, MAILTO, diretório de trabalho — aparece como uma nota.

  5. Copia e instala.

    Coloque as duas unidades no lugar, depois habilite e inicie o temporizador. As próximas execuções aparecem no list-timers.

O mapeamento

Uma linha de entrada, duas unidades de saída.

O conversor lê uma entrada padrão de crontab — cinco campos de tempo mais um comando, ou um @macro — e emite um systemd .timer emparelhado com um .service.

A linha de crontab

Os cinco campos são minute, hour, day-of-month, month e day-of-week, seguidos do comando. Listas (1,15), intervalos (1-5), passos (*/10) e @macros são todos compreendidos.

crontab
# Run the nightly backup every day at 03:00
0 3 * * *  /usr/local/bin/backup.sh

A unidade .timer

Carrega o agendamento como uma expressão OnCalendar=. Persistent=true significa que uma execução perdida enquanto a máquina estava desligada é disparada na próxima inicialização — mais próximo de como os operadores esperam que um trabalho de backup se comporte.

backup.timer
[Unit]
Description=Run backup.sh (migrated from crontab)

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

A unidade .service

Envolve o seu comando. Type=oneshot encaixa em um trabalho que executa até concluir, e ExecStart= contém o comando da linha de crontab. Adicione Environment= ou User= aqui conforme precisar.

backup.service
[Unit]
Description=backup.sh (migrated from crontab)

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

Instalar as unidades

Três comandos para entrar no ar.

Copie ambas as unidades, coloque-as em /etc/systemd/system/, recarregue o daemon, depois habilite e inicie o .timer — nunca o serviço diretamente. O temporizador é o que agenda a execução.

Uma vez habilitado, systemctl list-timers mostra o próximo horário de disparo, e journalctl -u backup.service acompanha a saída que o antigo MAILTO teria enviado para você por e-mail.

install.sh
# Drop the units in place, then enable the timer
$ sudo cp backup.timer backup.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now backup.timer

# Confirm the next scheduled run
$ systemctl list-timers backup.timer

Antes de fazer a virada

Uma nota sobre paridade: as unidades geradas cobrem o caso comum — agendamento, comando e tratamento de execuções perdidas. Alguns comportamentos do cron não têm um equivalente direto em OnCalendar= e aparecem como notas de migração no lugar: as atribuições de ambiente por linha (mova-as para Environment= / EnvironmentFile=), o envio de e-mail da saída via MAILTO (use o journald ou um manipulador OnFailure=) e o diretório de trabalho implícito (defina WorkingDirectory=). Revise as notas, depois execute o temporizador uma vez com systemctl start para confirmar antes de remover a linha de crontab original.

FAQ

Suas perguntas, respondidas.

Toque em uma pergunta para expandir a resposta.

Ele pega uma única linha de crontab — os cinco campos de tempo mais o comando — e gera uma configuração equivalente no systemd: uma unidade .timer com uma expressão OnCalendar= que corresponde ao seu agendamento, e uma unidade .service que executa o seu comando. Ele também lista notas de migração que apontam qualquer coisa que o systemd trata de forma diferente, como o diretório de trabalho implícito ou o ambiente. Tudo é calculado no seu navegador.

Não. O conversor roda 100% no lado do cliente. Sua linha de cron e seu comando são analisados e traduzidos na aba do seu navegador: nada é enviado para um servidor, e não há conta nem cadastro. É seguro colar comandos e caminhos internos.

Um conjunto de campos de crontab é reescrito na sintaxe de calendário OnCalendar= do systemd — por exemplo, “0 3 * * *” vira “*-*-* 03:00:00” (diariamente às 03:00). Listas, intervalos e valores de passo são mapeados para os seus equivalentes em OnCalendar, e os @macros comuns como @daily e @hourly são mapeados para as suas formas canônicas de temporizador. Depois de instalar o temporizador, você pode confirmar as próximas execuções com “systemctl list-timers”.

Os temporizadores oferecem registro estruturado através do journal (journalctl -u your.service), ordenação de dependências, limites de recursos, repetição automática e agendamento preciso versus monotônico, além de Persistent=true para que uma execução perdida possa ser disparada na próxima inicialização. Eles são a primitiva de agendamento nativa nas distribuições Linux modernas com systemd, onde muitas vezes o crond por usuário nem sequer está instalado.

Alguns comportamentos do cron não têm um equivalente direto em OnCalendar= e, em vez disso, aparecem como notas de migração — extensões de cron não padronizadas ou específicas do fornecedor, o envio de e-mail da saída via MAILTO (use o journald ou um manipulador OnFailure=) e as atribuições de ambiente por linha (mova-as para Environment= ou para um EnvironmentFile= no .service). O conversor sinaliza esses casos para que nada mude de significado silenciosamente.

Não. Este é um utilitário independente e comunitário, e não é afiliado nem endossado pelo projeto systemd ou por qualquer implementação de cron. Ele modela os formatos padrão de crontab e de unidades do systemd por familiaridade e os nomeia apenas para descrever o que converte.

@reboot não tem equivalente em OnCalendar= e é mapeado para OnBootSec=1min na seção [Timer], de modo que o trabalho é disparado uma vez logo após cada inicialização. @hourly se expande para OnCalendar=*-*-* *:00:00, @daily para OnCalendar=*-*-* 00:00:00, @weekly para OnCalendar=Sun *-*-* 00:00:00, @monthly para OnCalendar=*-*-01 00:00:00, e @yearly para OnCalendar=*-01-01 00:00:00. O conversor trata todos esses casos automaticamente e anota o caso especial do @reboot.

Adicione Persistent=true à seção [Timer] junto da sua linha OnCalendar=. O systemd registra em disco o horário do último disparo e, se o horário agendado passou enquanto a máquina estava desligada, executa o trabalho imediatamente na próxima inicialização. O conversor sempre inclui Persistent=true na unidade .timer gerada, então esse comportamento já vem ativado por padrão.

Para trabalhos de todo o sistema, coloque ambas as unidades em /etc/systemd/system/, depois execute sudo systemctl daemon-reload e sudo systemctl enable --now yourjob.timer. Habilite a unidade .timer — não o .service diretamente —, já que o temporizador é o que controla o agendamento. Para trabalhos por usuário, coloque-as em ~/.config/systemd/user/ e use systemctl --user enable --now yourjob.timer no lugar.

Execute systemd-analyze calendar “<expression>” para validar a sintaxe e ver quando a expressão vai ocorrer da próxima vez — por exemplo, systemd-analyze calendar “*-*-* 03:00:00”. Depois que o temporizador estiver instalado, systemctl list-timers mostra cada temporizador ativo com seus horários de última e próxima execução, e journalctl -u yourjob.service transmite a saída do trabalho.

More free, private DevOps tools.

O Conversor de Cron para systemd é uma ferramenta dentro do OpsCanopy — uma copa crescente de validadores, conversores e testadores baseados no navegador que nunca tocam um servidor.

29 ferramentas gratuitas, todas capazes de funcionar offline — o opscanopy.com não exige cadastro e não envia nada.

Trabalha com agendamentos? Combine-o com o Testador de expressões Cron para ler uma linha de cron em linguagem simples primeiro, ou explore o diretório de ferramentas completo.

Não é afiliado nem endossado pelo projeto systemd ou por qualquer implementação de cron. Os nomes de formato são usados apenas para descrever o que esta ferramenta converte.