Aller au contenu

Convertisseur Cron vers systemd · Planification

Faites passer une ligne de crontab vers un timer systemd.

Collez une seule entrée crontab pour générer une paire systemd .timer et .service avec une expression OnCalendar= et des notes de migration — gratuit, en ligne, sans inscription requise.

Fonctionne dans votre navigateur Sans inscription Gratuit et ouvert Mis à jour le 28 juil. 2026

Bac à sable du convertisseur Cron vers 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.

Le manque

systemd est le nouveau crontab.

Les distributions Linux modernes planifient les tâches avec des timers systemd, et beaucoup ne fournissent plus du tout de démon cron par utilisateur. Les timers vous offrent la journalisation journald, l’ordonnancement des dépendances, des limites de ressources, des nouvelles tentatives et Persistent=true pour les exécutions manquées — des choses qu’une simple ligne crontab ne peut pas exprimer.

Mais la syntaxe est peu familière, et réécrire une planification à la main en OnCalendar= à travers deux fichiers d’unité est fastidieux et facile à entacher d’erreurs subtiles. Ce convertisseur fait pour vous la partie mécanique — collez une ligne de crontab pour la migrer vers des unités de timer systemd en quelques secondes — et signale la poignée de comportements — environnement, MAILTO, répertoire de travail — qui ne se traduisent pas à l’identique, afin que la migration soit honnête plutôt que silencieuse.

Besoin de lire d’abord le côté cron ? Essayez le testeur d’expressions Cron, puis convertissez-le ici — ou passez directement au bac à sable interactif ci-dessus.

Le pipeline

Comment ça marche.

Cinq étapes déterministes transforment une ligne de crontab en une paire d’unités installables — le tout dans l’onglet de votre navigateur, à chaque fois.

  1. Analyser la ligne.

    Votre entrée crontab est scindée en cinq champs horaires (ou une @macro) et la commande qui suit.

  2. Construire OnCalendar.

    Les champs horaires sont réécrits dans une expression de calendrier systemd OnCalendar=, listes et pas inclus.

  3. Émettre les unités.

    Un .timer portant la planification et un .service enveloppant votre commande sont générés sous forme de paire assortie.

  4. Signaler les écarts.

    Tout ce que cron fait et que systemd gère différemment — env, MAILTO, répertoire de travail — apparaît sous forme de note.

  5. Copier et installer.

    Placez les deux unités, puis activez et démarrez le timer. Les prochaines exécutions s’affichent dans list-timers.

La correspondance

Une ligne en entrée, deux unités en sortie.

Le convertisseur lit une entrée crontab standard — cinq champs horaires plus une commande, ou une @macro — et émet un systemd .timer associé à un .service.

La ligne de crontab

Les cinq champs sont minute, hour, day-of-month, month et day-of-week, suivis de la commande. Les listes (1,15), les plages (1-5), les pas (*/10) et les @macros sont tous compris.

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

L’unité .timer

Porte la planification sous forme d’expression OnCalendar=. Persistent=true signifie qu’une exécution manquée pendant que la machine était éteinte se déclenche au prochain démarrage — plus proche de la façon dont les opérateurs attendent d’une tâche de sauvegarde qu’elle se comporte.

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

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

[Install]
WantedBy=timers.target

L’unité .service

Enveloppe votre commande. Type=oneshot convient à une tâche exécutée jusqu’à son terme, et ExecStart= contient la commande issue de la ligne crontab. Ajoutez Environment= ou User= ici selon vos besoins.

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

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

Installer les unités

Trois commandes pour passer en production.

Copiez les deux unités, placez-les dans /etc/systemd/system/, rechargez le démon, puis activez et démarrez le .timer — jamais le service directement. C’est le timer qui planifie l’exécution.

Une fois activé, systemctl list-timers affiche l’heure du prochain déclenchement, et journalctl -u backup.service suit la sortie que l’ancien MAILTO vous aurait envoyée par 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

Avant de basculer

Une note sur la parité : les unités générées couvrent le cas courant — planification, commande et gestion des exécutions manquées. Quelques comportements de cron n’ont pas d’équivalent direct OnCalendar= et apparaissent plutôt sous forme de notes de migration : les affectations d’environnement ligne par ligne (déplacez-les vers Environment= / EnvironmentFile=), MAILTO pour l’envoi de la sortie par e-mail (utilisez journald ou un gestionnaire OnFailure=), et le répertoire de travail implicite (définissez WorkingDirectory=). Examinez les notes, puis exécutez le timer une fois avec systemctl start pour confirmer avant de supprimer la ligne crontab d’origine.

FAQ

Vos questions, nos réponses.

Appuyez sur une question pour afficher la réponse.

Il prend une seule ligne de crontab — les cinq champs horaires plus la commande — et génère une configuration systemd équivalente : une unité .timer avec une expression OnCalendar= qui correspond à votre planification, et une unité .service qui exécute votre commande. Il dresse aussi la liste des notes de migration qui signalent tout ce que systemd gère différemment, comme le répertoire de travail implicite ou l’environnement. Tout est calculé dans votre navigateur.

Non. Le convertisseur fonctionne 100 % côté client. Votre ligne cron et votre commande sont analysées et traduites dans l’onglet de votre navigateur — rien n’est envoyé à un serveur, et il n’y a ni compte ni inscription. Vous pouvez coller en toute sécurité des commandes et des chemins internes.

Un ensemble de champs crontab est réécrit dans la syntaxe de calendrier OnCalendar= de systemd — par exemple « 0 3 * * * » devient « *-*-* 03:00:00 » (tous les jours à 03:00). Les listes, plages et valeurs de pas sont converties en leurs équivalents OnCalendar, et les @macros courantes comme @daily et @hourly sont converties en leurs formes de timer canoniques. Après avoir installé le timer, vous pouvez confirmer les prochaines exécutions avec « systemctl list-timers ».

Les timers vous offrent une journalisation structurée via le journal (journalctl -u your.service), un ordonnancement des dépendances, des limites de ressources, une nouvelle tentative automatique et une planification précise ou monotone, ainsi que Persistent=true pour qu’une exécution manquée puisse se déclencher au prochain démarrage. C’est la primitive de planification native des distributions Linux modernes sous systemd, où le crond par utilisateur n’est souvent même pas installé.

Quelques comportements de cron n’ont pas d’équivalent direct en OnCalendar= et apparaissent plutôt sous forme de notes de migration — les extensions cron non standard ou propres à un fournisseur, MAILTO pour l’envoi de la sortie par e-mail (utilisez journald ou un gestionnaire OnFailure=), et les affectations d’environnement ligne par ligne (déplacez-les vers Environment= ou un EnvironmentFile= dans le .service). Le convertisseur les signale afin que rien ne change de sens en silence.

Non. Il s’agit d’un utilitaire communautaire et indépendant qui n’est ni affilié au projet systemd ni à aucune implémentation de cron, et qui n’est pas approuvé par eux. Il modélise les formats standard d’unités crontab et systemd par souci de familiarité et ne les nomme que pour décrire ce qu’il convertit.

@reboot n’a pas d’équivalent OnCalendar= et se traduit par OnBootSec=1min dans la section [Timer], de sorte que la tâche se déclenche une fois peu après chaque démarrage. @hourly se développe en OnCalendar=*-*-* *:00:00, @daily en OnCalendar=*-*-* 00:00:00, @weekly en OnCalendar=Sun *-*-* 00:00:00, @monthly en OnCalendar=*-*-01 00:00:00, et @yearly en OnCalendar=*-01-01 00:00:00. Le convertisseur gère automatiquement tous ces cas et signale le cas particulier de @reboot.

Ajoutez Persistent=true à la section [Timer] à côté de votre ligne OnCalendar=. systemd enregistre sur le disque l’heure du dernier déclenchement et, si l’heure planifiée est passée pendant que la machine était éteinte, exécute la tâche immédiatement au prochain démarrage. Le convertisseur inclut toujours Persistent=true dans l’unité .timer générée afin que ce comportement soit actif par défaut.

Pour les tâches à l’échelle du système, placez les deux unités dans /etc/systemd/system/, puis exécutez sudo systemctl daemon-reload et sudo systemctl enable --now yourjob.timer. Activez l’unité .timer — et non le .service directement, puisque c’est le timer qui contrôle la planification. Pour les tâches par utilisateur, placez-les dans ~/.config/systemd/user/ et utilisez plutôt systemctl --user enable --now yourjob.timer.

Exécutez systemd-analyze calendar « <expression> » pour valider la syntaxe et voir quand l’expression s’écoulera la prochaine fois — par exemple systemd-analyze calendar « *-*-* 03:00:00 ». Une fois le timer installé, systemctl list-timers affiche chaque timer actif avec ses heures de dernière et de prochaine exécution, et journalctl -u yourjob.service diffuse la sortie de la tâche.

More free, private DevOps tools.

Le convertisseur Cron vers systemd est l’un des outils de OpsCanopy — une canopée grandissante de validateurs, de convertisseurs et de testeurs basés sur le navigateur qui ne touchent jamais un serveur.

29 outils gratuits, tous utilisables hors ligne — opscanopy.com fonctionne sans inscription et sans rien téléverser.

Vous travaillez avec des planifications ? Associez ceci au testeur d’expressions Cron pour lire d’abord une ligne cron en langage clair, ou parcourez l’intégralité du répertoire des outils.

Non affilié au projet systemd ni à aucune implémentation de cron, et non approuvé par eux. Les noms de format ne sont utilisés que pour décrire ce que cet outil convertit.