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.
Cas d'utilisation du générateur cron
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.
| Planification | Expression | Usage typique |
|---|---|---|
| Every minute | * * * * * | Health checks, queue polling |
| Every 5 minutes | */5 * * * * | Metrics collection, cache refresh |
| Every 15 minutes | */15 * * * * | API sync, dashboard updates |
| Every hour | 0 * * * * | Log rotation, report generation |
| Every 6 hours | 0 */6 * * * | Database backups, digest emails |
| Daily at midnight | 0 0 * * * | Nightly batch jobs, cleanup scripts |
| Daily at 9 AM | 0 9 * * * | Daily reports, notification digests |
| Weekdays at 9 AM | 0 9 * * 1-5 | Business-hours tasks, standup reminders |
| Every Monday at midnight | 0 0 * * 1 | Weekly reports, dependency updates |
| First of every month | 0 0 1 * * | Billing runs, monthly aggregation |
| Every Sunday at 2:30 AM | 30 2 * * 0 | Full backups during low-traffic window |
| January 1st at midnight | 0 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.
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érateur | Syntaxe | Exemple | Produit |
|---|---|---|---|
| Wildcard | * | * (minute) | Every minute |
| List | a,b,c | 1,15 (day) | 1st and 15th |
| Range | a-b | 9-17 (hour) | 9 AM through 5 PM |
| Step | */n | */10 (minute) | Every 10 minutes |
| Range+Step | a-b/n | 10-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 :
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"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 timestamppackage 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()
}# 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