Parseur d'expressions Cron
Analysez les expressions cron en descriptions lisibles et prévisualisez les prochaines exécutions
Expression cron
minute hour day(month) month day(week)
Description lisible
At 9:00 AM, Mon, Tue, Wed, Thu, Fri
Détail des champs
Minute
0
0–59
Hour
9
0–23
Day (month)
*
1–31
Month
*
1–12
Day (week)
1-5
0–6
10 prochaines exécutions planifiées
Qu'est-ce que l'analyse d'expressions cron ?
Une expression cron est une chaîne de cinq champs séparés par des espaces qui définit une planification récurrente. Ce format est né avec le démon cron Unix, créé par Ken Thompson pour Unix Version 7 en 1979. Chaque champ représente une unité de temps : minute, heure, jour du mois, mois et jour de la semaine. Analyser une expression cron consiste à convertir cette notation compacte en une description lisible et en une liste concrète des prochaines exécutions.
Le format standard à cinq champs est utilisé par crontab sur Linux et macOS, par les plateformes CI/CD comme GitHub Actions et GitLab CI, par les planificateurs cloud d'AWS (EventBridge), Google Cloud Scheduler et Azure Functions, ainsi que par les bibliothèques de planification de tâches dans tous les grands langages de programmation. Certains systèmes étendent le format à six ou sept champs en ajoutant un champ secondes ou un champ année, mais le format à cinq champs défini par POSIX reste la référence commune à toutes les implémentations.
Analyser des expressions cron manuellement est source d'erreurs. L'interaction entre les champs produit des planifications non évidentes : 0 9 1-7 * 1 ne signifie pas « chaque lundi de la première semaine », mais « du 1er au 7 de chaque mois OU n'importe quel lundi ». Un parseur cron élimine cette ambiguïté en développant chaque champ, en appliquant les règles de combinaison, et en produisant les horodatages réels auxquels la tâche se déclenchera.
Pourquoi utiliser ce parseur cron ?
Lire une expression cron comme 30 */6 1,15 * * dans un fichier de configuration et savoir exactement quand elle se déclenche demande un calcul mental sur cinq champs. Ce parseur effectue ce travail instantanément.
Cas d'utilisation du parseur cron
Référence de la syntaxe des expressions cron
Une expression cron standard comporte cinq champs séparés par des espaces. Chaque champ accepte des entiers, des jokers, des plages, des listes et des valeurs de pas. Le tableau ci-dessous indique la plage autorisée et les opérateurs pour chaque champ.
| Champ | Plage | Opérateurs | Description |
|---|---|---|---|
| Minute | 0–59 | * , - / | Minute within the hour |
| Hour | 0–23 | * , - / | Hour of the day (24-hour) |
| Day (month) | 1–31 | * , - / | Day of the month |
| Month | 1–12 | * , - / | Month of the year (or JAN–DEC) |
| Day (week) | 0–6 | * , - / | Day of the week (0 = Sunday, or SUN–SAT) |
Quatre caractères spéciaux contrôlent la façon dont les valeurs sont filtrées dans chaque champ :
| Caractère | Nom | Comportement |
|---|---|---|
| * | Wildcard | Matches every possible value in the field. * in the minute field means "every minute." |
| , | List | Separates individual values. 1,15 in the day field means "the 1st and 15th." |
| - | Range | Defines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday." |
| / | Step | Defines an interval. */10 in the minute field means "every 10 minutes." 5/15 means "5, 20, 35, 50." |
Voici des expressions cron courantes qui couvrent la plupart des besoins de planification :
| Expression | Planification |
|---|---|
| * * * * * | Every minute |
| 0 * * * * | Every hour (at minute 0) |
| */15 * * * * | Every 15 minutes |
| 0 9 * * * | Every day at 9:00 AM |
| 0 9 * * 1-5 | Weekdays at 9:00 AM |
| 30 2 * * 0 | Every Sunday at 2:30 AM |
| 0 0 1 * * | First day of every month at midnight |
| 0 0 * * 1 | Every Monday at midnight |
| 0 0 1 1 * | January 1st at midnight (yearly) |
| 0 */6 * * * | Every 6 hours |
| 5,35 * * * * | At minute 5 and 35 of every hour |
| 0 9-17 * * 1-5 | Every hour from 9 AM to 5 PM, weekdays |
Exemples de code
Comment analyser des expressions cron et calculer les prochaines exécutions dans les langages les plus utilisés :
import cronstrue from 'cronstrue';
// Parse cron to human-readable text
cronstrue.toString('0 9 * * 1-5');
// → "At 09:00 AM, Monday through Friday"
cronstrue.toString('*/15 * * * *');
// → "Every 15 minutes"
// Validate with cron-parser and get next run times
import { parseExpression } from 'cron-parser';
const interval = parseExpression('30 2 * * 0');
console.log(interval.next().toISOString());
// → next Sunday at 02:30 UTC
// Iterate over the next 5 runs
for (let i = 0; i < 5; i++) {
console.log(interval.next().toString());
}from crontab import CronTab
from croniter import croniter
from datetime import datetime
# Parse and describe a cron expression
cron = CronTab('0 9 * * 1-5')
print(cron.next(default_utc=True))
# → seconds until next run
# Get the next 5 run times with croniter
base = datetime.now()
cron_iter = croniter('0 9 * * 1-5', base)
for _ in range(5):
print(cron_iter.get_next(datetime))
# → next 5 weekday 09:00 timestamps
# Check if a specific time matches
print(croniter.match('*/15 * * * *', datetime(2026, 3, 25, 10, 30)))
# → True (minute 30 is divisible by 15)package main
import (
"fmt"
"time"
"github.com/robfig/cron/v3"
)
func main() {
// Parse a standard 5-field cron expression
parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow)
schedule, err := parser.Parse("0 9 * * 1-5")
if err != nil {
panic(err)
}
// Calculate the next 5 run times
now := time.Now()
for i := 0; i < 5; i++ {
now = schedule.Next(now)
fmt.Println(now)
}
// → next 5 weekday 09:00 timestamps
}# List current user's cron jobs crontab -l # Edit cron jobs interactively crontab -e # Add a job: run backup.sh every day at 2:30 AM # (append to crontab via pipe) (crontab -l 2>/dev/null; echo "30 2 * * * /home/user/backup.sh") | crontab - # Check syntax with a dry-run parse (requires cronie or busybox) # The system will reject invalid expressions when saving # View cron logs on systemd-based Linux journalctl -u cron --since "1 hour ago"