Convertisseur de minuteur systemd vers expression Cron
Convertissez gratuitement la syntaxe OnCalendar= d'un minuteur systemd en expression cron (minute heure jour mois jour de la semaine). L'inverse de notre convertisseur "Cron vers minuteur systemd". Prend en charge les raccourcis nommés (daily, weekly, etc.) et avertit des différences sémantiques lorsque le jour du mois et le jour de la semaine sont spécifiés en même temps.
Correspondance entre composants systemd et champs cron
Chaque partie de la syntaxe OnCalendar= de systemd correspond à l'un des cinq champs de cron comme suit.
| Position | Emplacement dans systemd | Champ cron |
|---|---|---|
| 1 | Minute dans la partie horaire (MM dans HH:MM:SS) | Minute |
| 2 | Heure dans la partie horaire (HH dans HH:MM:SS) | Heure |
| 3 | Jour dans la partie date (jour dans année-mois-jour) | Jour du mois |
| 4 | Mois dans la partie date (mois dans année-mois-jour) | Mois |
| 5 | Préfixe de jour de la semaine (ex. Mon, Mon..Fri) | Jour de la semaine |
Le champ des secondes de systemd (SS dans HH:MM:SS) n'a pas d'équivalent cron et est donc ignoré lors de la conversion (un avertissement apparaît si les secondes ne sont pas "00").
Correspondance entre abréviations de jour systemd et numéros de jour de la semaine cron
systemd utilise des abréviations anglaises pour les jours de la semaine, tandis que cron utilise des nombres de 0 à 6.
| Abréviation de jour systemd | Numéro de jour de la semaine cron |
|---|---|
| Sun | 0 |
| Mon | 1 |
| Tue | 2 |
| Wed | 3 |
| Thu | 4 |
| Fri | 5 |
| Sat | 6 |
Correspondance entre raccourcis nommés systemd et expressions cron
systemd dispose de raccourcis nommés lisibles comme "daily" et "weekly", et cet outil peut aussi les convertir en expressions cron.
| OnCalendar= | Expression cron |
|---|---|
| minutely | * * * * * |
| hourly | 0 * * * * |
| daily / midnight | 0 0 * * * |
| weekly | 0 0 * * 1 |
| monthly | 0 0 1 * * |
| yearly / annually | 0 0 1 1 * |
Exemples de conversion courants
| OnCalendar= | Expression cron | Signification |
|---|---|---|
| *-*-* *:*:00 | * * * * * | S'exécute chaque minute (équivalent à "* * * * *" en cron). |
| *:00/15:00 | */15 * * * * | S'exécute toutes les 15 minutes. |
| Mon..Fri 09:00:00 | 0 9 * * 1-5 | S'exécute à 9h en semaine (du lundi au vendredi). |
| *-*-01 00:00:00 | 0 0 1 * * | S'exécute à minuit le 1er de chaque mois. |
| *-01-01 00:00:00 | 0 0 1 1 * | S'exécute à minuit le 1er janvier chaque année. |
| Mon *-*-01 00:00:00 | 0 0 1 * 1 | Un exemple spécifiant à la fois un jour du mois (le 1er) et un jour de la semaine (lundi). systemd traite cela comme une condition ET (s'exécute seulement si les deux correspondent), mais cron l'interprète comme une condition OU (s'exécute si l'un ou l'autre correspond) — le résultat converti s'exécute donc plus souvent que ce que prévoyait l'expression OnCalendar d'origine. |
Une expression OnCalendar qui restreint à la fois le jour du mois et le jour de la semaine à autre chose que "*" ne peut pas être convertie avec précision en cron (systemd utilise une logique ET, cron utilise une logique OU). Vérifiez toujours la signification du résultat de conversion dans des cas comme celui-ci.
Ramener une minuterie systemd à une expression cron
Cet outil ramène l'`OnCalendar=` d'une minuterie systemd à une expression cron faite de minute, heure, jour du mois, mois et jour de la semaine. Les raccourcis nommés, tels `daily` et `weekly`, sont également pris en charge. C'est l'inverse de son outil jumeau.
**Ce qui mérite attention dans ce sens, c'est qu'une partie de ce que systemd sait exprimer n'a pas d'équivalent en cron.** `OnCalendar=` admet **une précision à la seconde** et des **plages de dates** telles que `*-*-01..07`, et ni l'une ni l'autre ne tient dans les cinq champs de cron. Cron n'a pas davantage de contrepartie à `Persistent=`, qui rattrape les exécutions manquées pendant que le système était éteint. **L'autre point tient à la sémantique du jour du mois et du jour de la semaine : systemd les traite comme un et, tandis que cron les lit comme un ou.** Un report direct déplace donc la planification du côté d'une exécution plus fréquente, et l'outil vous en avertit là où cela s'applique.
Comment convertir
- Saisissez la valeur d'OnCalendar= Une forme telle que `Mon *-*-* 06:00:00` convient, de même qu'un nom tel que `daily`.
- Parcourez l'expression cron produite Le résultat vous est livré reporté sur les cinq champs.
- Lisez les avertissements **Sont signalées tant les indications que cron ne sait exprimer que les différences de sémantique.**
- Recopiez-la dans une crontab Ajoutez ensuite la commande à exécuter et la ligne est prête à être inscrite.
Astuces pour en tirer le meilleur parti
- Vous pouvez saisir directement des raccourcis nommés comme "daily", "weekly" ou "monthly" — ils sont convertis en interne vers l'expression cron équivalente (par exemple, "daily" devient "0 0 * * *").
- Restreindre à la fois le jour du mois et le jour de la semaine à autre chose que "*" change la signification lors de la conversion de la logique ET de systemd en logique OU de cron. Vérifiez l'avertissement dans ce cas et confirmez que le résultat correspond à votre intention.
- Les champs année et secondes d'OnCalendar n'ont pas d'équivalent cron et sont donc abandonnés lors de la conversion (un avertissement vous en informe).
- Pratique lors de la migration de charges de travail hors de systemd — par exemple, lors du déplacement d'une tâche planifiée vers un Kubernetes CronJob (qui utilise une syntaxe de type cron).
- Pour les plannings simples qui ne combinent pas les restrictions de jour de la semaine et de date (toutes les heures, tous les jours, toutes les semaines, etc.), cette conversion est toujours exacte.
Dans quels cas s'en servir
Pour passer à un environnement dépourvu de systemd
**Les conteneurs et les systèmes de type UNIX plus anciens n'offrent parfois rien d'autre que cron.**
Pour déchiffrer une minuterie existante
Même sans aisance avec la syntaxe d'`OnCalendar=`, la passer en expression cron rend la fréquence évidente.
Pour tenir la même planification dans deux environnements
**Là où la production tourne sous systemd et le développement sous cron, les deux configurations se confrontent.**
Pour faire l'inventaire de vos planifications
Les convertir toutes ensemble vous donne l'occasion de vérifier que les intervalles sont ceux voulus.
Vocabulaire des planificateurs
- OnCalendar=
- La clé indiquant l'heure dans une minuterie systemd. **Jour de la semaine, date et heure tiennent sur une seule ligne.**
- Expression cron
- La syntaxe exprimant une heure par cinq champs : minute, heure, jour du mois, mois et jour de la semaine. **Elle ne sait pas indiquer les secondes.**
- Raccourci nommé
- Un alias donné à un intervalle courant, tel que `daily`, `weekly` ou `monthly`.
- Différence de sémantique
- **Lorsque jour du mois et jour de la semaine sont tous deux donnés, systemd les lit comme un et et cron comme un ou.**
- Persistent=
- Le réglage qui rattrape les exécutions manquées pendant que le système était éteint. **Cron n'en a pas de contrepartie directe.**
- Crontab
- Le fichier où s'écrit la planification de cron, ou la commande qui l'édite.
Questions fréquentes
Anecdote — Ce que signifie reconvertir un minuteur systemd vers cron
Les migrations technologiques sont généralement présentées comme unidirectionnelles — passer d'un ancien mécanisme à un plus récent —, mais en pratique, la conversion inverse survient aussi fréquemment. Déplacer une charge de travail d'un hôte basé sur systemd vers un conteneur léger qui ne prend en charge que cron, ou vers un outil d'orchestration utilisant une syntaxe de planification de type cron (comme Kubernetes CronJob), signifie reconvertir la syntaxe OnCalendar en expression cron.
Cette "conversion inverse" n'est pas une simple correspondance un à un, car la syntaxe OnCalendar de systemd est plus expressive que cron. Elle prend en charge des concepts que les cinq champs de cron ne peuvent tout simplement pas représenter — restrictions au niveau de l'année, précision à la seconde, et une combinaison de type ET entre date et jour de la semaine. C'est pourquoi cet outil vise à convertir avec précision les modèles couramment utilisés, et traite tout ce qui est plus complexe comme une erreur de conversion plutôt que de deviner une approximation.
La différence sémantique lorsque le jour du mois et le jour de la semaine sont tous deux spécifiés — logique ET chez systemd contre logique OU chez cron — est le plus grand piège de cette conversion inverse. Une condition comme "le 1er du mois" ET "lundi" limite systemd aux seuls jours qui sont à la fois le 1er et un lundi, mais cron s'exécuterait plutôt n'importe quel jour étant soit le 1er, soit un lundi. Cet outil avertit explicitement de cela afin que ce changement de sens, facile à manquer, ne passe pas inaperçu lors d'une migration.