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.
Astuces d'utilisation
- 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.
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.