Générateur d'expressions Cron

Génère des expressions cron visuellement avec un constructeur pas à pas

Préréglages rapides

Minute

Heure

Jour du mois

Mois

Jour de la semaine

Expression cron

0 9 * * *

minute hour day(month) month day(week)

Qu'est-ce qu'un générateur d'expressions cron ?

Un générateur d'expressions cron est un outil qui construit des chaînes de planification cron via une interface visuelle, sans avoir à les écrire manuellement. Les expressions cron sont des chaînes à cinq champs (minute, heure, jour du mois, mois, jour de la semaine) qui définissent quand une tâche récurrente doit s'exécuter. Ce format remonte au démon cron Unix originel de 1979 et est aujourd'hui utilisé dans crontab, les CronJobs Kubernetes, GitHub Actions, AWS EventBridge, Google Cloud Scheduler, et des dizaines de bibliothèques de planification.

Écrire des expressions cron de mémoire est une source fréquente de bugs. Les cinq champs interagissent de manière non évidente : une valeur de pas comme */15 dans le champ des minutes produit des exécutions à 0, 15, 30 et 45, tandis que 5/15 commence à la minute 5 et donne 5, 20, 35, 50. Combiner le jour du mois et le jour de la semaine avec des valeurs non génériques crée une condition OU, et non ET, ce qui surprend même les ingénieurs expérimentés. Un générateur visuel supprime cette ambiguïté en vous laissant choisir la planification souhaitée et en produisant automatiquement la syntaxe correcte.

Un générateur cron diffère d'un parseur cron. Un parseur prend une expression existante et l'explique en langage naturel. Un générateur fonctionne dans le sens inverse : vous décrivez la planification dont vous avez besoin, et l'outil produit la chaîne cron correspondante. Utilisez le générateur pour créer un nouveau job planifié ; utilisez le parseur pour auditer ou déboguer des expressions existantes.

Pourquoi utiliser ce générateur cron ?

Écrire une expression cron à la main implique de mémoriser l'ordre des champs, les plages de valeurs et les règles des opérateurs. Un seul champ mal placé transforme un job quotidien en un job qui s'exécute chaque minute. Ce générateur vous permet de choisir votre planification visuellement et de copier le résultat en un clic.

🖱️
Constructeur de planification visuel
Sélectionnez les valeurs de minute, heure, jour, mois et jour de la semaine via des listes déroulantes et des boutons. L'expression cron se met à jour en temps réel à chaque modification. Aucune syntaxe à mémoriser.
🔒
Traitement axé sur la confidentialité
La génération s'effectue entièrement dans votre navigateur. Aucune donnée de planification n'est envoyée à un serveur. Vos expressions cron et configurations de jobs restent sur votre appareil.
Résultat instantané avec aperçu
Visualisez l'expression cron générée et un aperçu des prochaines exécutions planifiées pendant la construction. Vérifiez que la planification est correcte avant de la copier dans votre configuration.
📋
Aucun compte requis
Ouvrez la page et commencez à construire. Pas de connexion, pas de clé API, pas d'installation. Fonctionne sur tout appareil disposant d'un navigateur moderne, y compris mobile.

Cas d'utilisation du générateur cron

Développeur frontend
Construisez des expressions cron pour les panneaux d'administration et les interfaces de planification. Générez la syntaxe correcte pour les sélecteurs de planification côté utilisateur qui stockent les chaînes cron en base de données.
Ingénieur backend
Créez des expressions cron pour les files de tâches comme Celery, Sidekiq et Bull. Générez la chaîne de planification, vérifiez les prochaines exécutions, puis collez-la dans votre configuration de job.
DevOps / SRE
Générez des planifications cron pour les CronJobs Kubernetes, les pipelines CI/CD et l'automatisation d'infrastructure. Construisez des expressions pour les fenêtres de sauvegarde, le renouvellement de certificats et la rotation des logs sans erreur de syntaxe.
Ingénieur QA
Créez des expressions cron de test qui se déclenchent à des intervalles précis pour les tests d'intégration. Générez des planifications produisant des temps d'exécution prévisibles pour valider le comportement du planificateur.
Ingénieur data
Construisez des expressions cron pour les déclencheurs de pipelines ETL et les planifications de synchronisation de données. Générez des planifications non chevauchantes pour les étapes d'extraction, de transformation et de chargement avec un timing précis.
Étudiant / Apprenant
Apprenez la syntaxe cron en expérimentant avec le constructeur visuel. Modifiez les champs individuellement et observez comment l'expression et les prochaines exécutions évoluent. Développez votre intuition pour les jokers, les plages et les valeurs de pas.

Préréglages courants de planification cron

Le tableau ci-dessous liste les expressions cron pour les planifications les plus fréquentes. La plupart des jobs en production correspondent à l'un de ces modèles. Modifiez les champs individuels pour adapter le timing à votre besoin.

PlanificationExpressionUsage typique
Every minute* * * * *Health checks, queue polling
Every 5 minutes*/5 * * * *Metrics collection, cache refresh
Every 15 minutes*/15 * * * *API sync, dashboard updates
Every hour0 * * * *Log rotation, report generation
Every 6 hours0 */6 * * *Database backups, digest emails
Daily at midnight0 0 * * *Nightly batch jobs, cleanup scripts
Daily at 9 AM0 9 * * *Daily reports, notification digests
Weekdays at 9 AM0 9 * * 1-5Business-hours tasks, standup reminders
Every Monday at midnight0 0 * * 1Weekly reports, dependency updates
First of every month0 0 1 * *Billing runs, monthly aggregation
Every Sunday at 2:30 AM30 2 * * 0Full backups during low-traffic window
January 1st at midnight0 0 1 1 *Annual reports, license renewals

Les composants d'une expression cron

Toute expression cron comporte exactement cinq champs, lus de gauche à droite. Chaque champ accepte des valeurs et des opérateurs spécifiques. Connaître ces règles suffit pour écrire n'importe quelle planification rencontrée en production.

Disposition d'une expression cron à cinq champs :
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

Quatre opérateurs contrôlent la façon dont les valeurs sont mises en correspondance dans chaque champ. Vous pouvez les combiner : 1-5/2 dans le champ jour de la semaine signifie lundi, mercredi, vendredi (plage 1-5, pas de 2).

OpérateurSyntaxeExempleProduit
Wildcard** (minute)Every minute
Lista,b,c1,15 (day)1st and 15th
Rangea-b9-17 (hour)9 AM through 5 PM
Step*/n*/10 (minute)Every 10 minutes
Range+Stepa-b/n10-30/5 (min)10, 15, 20, 25, 30

Exemples de code

Comment créer et enregistrer des planifications cron avec Node.js, Python, Go et bash :

JavaScript (Node.js)
import { CronJob } from 'cron';

// Build a cron expression: every weekday at 9:00 AM
const expression = '0 9 * * 1-5';

const job = new CronJob(expression, () => {
  console.log('Running weekday morning task');
});
job.start();

// Programmatic expression building
function buildCron({ minute = '*', hour = '*', dom = '*', month = '*', dow = '*' }) {
  return `${minute} ${hour} ${dom} ${month} ${dow}`;
}

const expr = buildCron({ minute: '0', hour: '*/6', dow: '1-5' });
console.log(expr); // → "0 */6 * * 1-5"
Python
from crontab import CronTab

# Create a new cron job for the current user
cron = CronTab(user=True)

# Build a job: run backup.py every day at 2:30 AM
job = cron.new(command='python3 /home/user/backup.py')
job.setall('30 2 * * *')

print(job)           # → 30 2 * * * python3 /home/user/backup.py
print(job.is_valid()) # → True

# Schedule every 15 minutes on weekdays
job2 = cron.new(command='/usr/bin/sync-data')
job2.minute.every(15)
job2.dow.during('MON', 'FRI')

cron.write()  # Save to user's crontab

# Verify next run time
from croniter import croniter
from datetime import datetime

it = croniter('30 2 * * *', datetime.now())
print(it.get_next(datetime))  # → next 2:30 AM timestamp
Go
package main

import (
    "fmt"
    "strings"
    "github.com/robfig/cron/v3"
)

// BuildCron constructs a 5-field cron expression from parts
func BuildCron(minute, hour, dom, month, dow string) string {
    fields := []string{minute, hour, dom, month, dow}
    return strings.Join(fields, " ")
}

func main() {
    // Generate: every weekday at 9 AM
    expr := BuildCron("0", "9", "*", "*", "1-5")
    fmt.Println(expr) // → 0 9 * * 1-5

    // Validate and schedule it
    c := cron.New()
    _, err := c.AddFunc(expr, func() {
        fmt.Println("Running scheduled task")
    })
    if err != nil {
        fmt.Printf("Invalid expression: %v\n", err)
        return
    }
    c.Start()
}
Bash (crontab)
# Open the crontab editor to add a new job
crontab -e

# Add a cron job without opening an editor:
# Run cleanup.sh every Sunday at 3 AM
(crontab -l 2>/dev/null; echo "0 3 * * 0 /home/user/cleanup.sh") | crontab -

# Generate and add a job: every 10 minutes, log disk usage
EXPR="*/10 * * * *"
CMD="df -h >> /var/log/disk-usage.log"
(crontab -l 2>/dev/null; echo "$EXPR $CMD") | crontab -

# Verify the job was added
crontab -l | tail -1
# → */10 * * * * df -h >> /var/log/disk-usage.log

# Remove all cron jobs (use with caution)
# crontab -r

Questions fréquentes

Quel est l'ordre correct des champs dans une expression cron ?
L'ordre standard à cinq champs est : minute (0-59), heure (0-23), jour du mois (1-31), mois (1-12), jour de la semaine (0-6, où 0 est dimanche). Cet ordre est défini par POSIX et utilisé par crontab, Kubernetes, GitHub Actions et la plupart des bibliothèques cron. Certains outils comme Quartz Scheduler ajoutent un champ secondes en tête, portant le total à six champs, mais la disposition à cinq champs est le standard universel.
Comment générer une expression cron pour « toutes les N minutes » ?
Utilisez l'opérateur de pas dans le champ des minutes : */N. Pour toutes les 5 minutes, écrivez */5 * * * *. Pour toutes les 15 minutes, écrivez */15 * * * *. L'opérateur de pas divise uniformément la plage du champ. Notez que */7 ne produit pas des exécutions toutes les 7 minutes à cheval sur les heures ; il produit des exécutions aux minutes 0, 7, 14, 21, 28, 35, 42, 49, 56, puis repart à 0 à l'heure suivante.
Peut-on générer une expression cron qui s'exécute le dernier jour de chaque mois ?
Le cron POSIX standard ne dispose pas d'opérateur « dernier jour du mois ». Il est impossible d'écrire 0 0 L * * dans crontab ou les CronJobs Kubernetes. Les alternatives incluent la planification pour les jours 28-31 avec un test shell ([ $(date +%d -d tomorrow) -eq 01 ]), ou l'utilisation d'une implémentation cron étendue comme Quartz qui supporte le modificateur L. Les expressions de taux AWS EventBridge peuvent également cibler le dernier jour nativement.
Quelle est la différence entre un générateur cron et un parseur cron ?
Un générateur cron prend vos exigences de planification (par exemple, « tous les jours de semaine à 9h ») et produit l'expression cron correcte (0 9 * * 1-5). Un parseur cron fonctionne dans le sens inverse : il prend une expression existante et produit une description lisible par un humain. Utilisez le générateur pour créer de nouvelles planifications. Utilisez le parseur pour réviser ou déboguer des planifications existantes.
Comment éviter le chevauchement des cron jobs ?
Cron lui-même ne prévient pas les exécutions simultanées. Si un job planifié chaque minute prend 90 secondes, deux instances se chevaucheront. Pour l'éviter, utilisez un fichier de verrouillage (flock dans bash), un verrou distribué (Redis, etcd), ou la politique de concurrence intégrée à votre planificateur. Les CronJobs Kubernetes disposent d'un champ concurrencyPolicy qui peut être défini à Forbid ou Replace. Dans les planificateurs applicatifs comme Celery, utilisez le pool solo ou un verrou au niveau de la tâche.
Est-ce que 0 ou 1 représente le premier jour de la semaine dans cron ?
Dans cron POSIX, 0 représente dimanche et 6 samedi. Les valeurs 0 et 7 représentent toutes deux dimanche dans la plupart des implémentations. Quartz Scheduler utilise une convention différente où 1 est dimanche et 7 est samedi. Si votre système supporte les noms de jours (SUN, MON, TUE), utilisez-les à la place des chiffres pour éviter toute confusion entre les plateformes.
Comment générer une expression cron pour un fuseau horaire spécifique ?
Le crontab traditionnel utilise le fuseau horaire local du système. Vous pouvez définir la variable TZ dans le fichier crontab (TZ=Europe/Paris) sur certains systèmes. Les CronJobs Kubernetes supportent un champ .spec.timeZone depuis la version 1.25. AWS EventBridge et Google Cloud Scheduler permettent de spécifier le fuseau horaire par planification. Documentez toujours le fuseau horaire attendu aux côtés de l'expression cron dans votre configuration.