Pular para o conteúdo

Conversor de Cron para systemd · Agendamento

Cron to systemd Converter: Migre uma linha de crontab para um temporizador do systemd.

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

Roda no seu navegador — nada do que você cola sai desta página. Como comprovamos isso

Roda no seu navegadorSem cadastroGrátis e abertoAtualizado em 4 de set. de 2026

Ambiente de testes do Conversor de Cron para systemd

Example
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 .serviceunits, 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 ePersistent=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 emOnCalendar= 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 oTestador de expressões Cron, depois converta-a aqui — ou vá direto aoambiente 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

Como uma linha de crontab vira um OnCalendar.

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 eday-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. AdicioneEnvironment= ouUser= aqui conforme precisar.

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

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

Instalar as unidades

Instale e habilite o temporizador em três comandos.

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-timersmostra o próximo horário de disparo, ejournalctl -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

O que o cron faz e um temporizador do systemd não.

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 emOnCalendar= e aparecem como notas de migração no lugar: as atribuições de ambiente por linha (mova-as paraEnvironment= /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 comsystemctl start para confirmar antes de remover a linha de crontab original.

Uma diferença passa fácil despercebida: quando uma linha restringe ao mesmo tempoday-of-month eday-of-week, ocron dispara se qualquer um dos dois casar, enquanto oOnCalendar= exige os dois. O conversor sinaliza essa linha nas notas — reproduzir o comportamento docron exige dois temporizadores.

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 doOpsCanopy — uma copa crescente de validadores, conversores e testadores baseados no navegador que nunca tocam um servidor.

39 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 oTestador de expressões Cron para ler uma linha de cron em linguagem simples primeiro, passe as unidades geradas aqui peloSystemd Unit Validatorpara validar suas edições manuais, ou explore odiretó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.