Cron Expression Generator

Erstellt Cron-Ausdrücke visuell mit einem schrittweisen Builder

Schnellvoreinstellungen

Minute

Stunde

Monatstag

Monat

Wochentag

Cron-Ausdruck

0 9 * * *

minute hour day(month) month day(week)

Was ist ein Cron Expression Generator?

Ein Cron Expression Generator ist ein Werkzeug, das Cron-Zeitplan-Strings über eine visuelle Oberfläche erstellt, ohne dass du sie von Hand schreiben musst. Cron-Ausdrücke sind fünffelderbasierte Strings (Minute, Stunde, Monatstag, Monat, Wochentag), die festlegen, wann ein wiederkehrender Task ausgeführt werden soll. Das Format geht auf den ursprünglichen Unix-cron-Daemon von 1979 zurück und wird heute in crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler und zahlreichen Job-Scheduling-Bibliotheken verwendet.

Cron-Ausdrücke aus dem Gedächtnis zu schreiben ist eine häufige Fehlerquelle. Die fünf Felder interagieren auf nicht offensichtliche Weise: Ein Schrittwert wie */15 im Minutenfeld erzeugt Ausführungen bei 0, 15, 30 und 45, während 5/15 bei Minute 5 beginnt und 5, 20, 35, 50 ergibt. Die Kombination von Monatstag und Wochentag mit Nicht-Wildcard-Werten erzeugt eine ODER-Bedingung, keine UND-Bedingung — was selbst erfahrene Entwickler überrascht. Ein visueller Generator beseitigt diese Unklarheit, indem er dich den gewünschten Zeitplan auswählen lässt und die korrekte Syntax automatisch erzeugt.

Ein Cron-Generator unterscheidet sich von einem Cron-Parser. Ein Parser nimmt einen vorhandenen Ausdruck und erklärt ihn in verständlicher Sprache. Ein Generator arbeitet in die entgegengesetzte Richtung: Du beschreibst den benötigten Zeitplan, und das Werkzeug gibt den passenden Cron-String aus. Verwende den Generator beim Erstellen eines neuen geplanten Jobs; verwende den Parser beim Prüfen oder Debuggen vorhandener Jobs.

Warum diesen Cron-Generator verwenden?

Einen Cron-Ausdruck von Hand zu erstellen bedeutet, Feldreihenfolge, Wertebereiche und Operatorregeln auswendig zu lernen. Ein einziges falsch platziertes Feld verwandelt einen täglichen Job in einen, der jede Minute läuft. Dieser Generator ermöglicht es dir, deinen Zeitplan visuell auszuwählen und das Ergebnis mit einem Klick zu kopieren.

🖱️
Visueller Zeitplan-Builder
Wähle Minuten-, Stunden-, Tag-, Monats- und Wochentagswerte aus Dropdowns und Umschaltern. Der Cron-Ausdruck wird in Echtzeit aktualisiert, wenn du jedes Feld änderst. Keine Notwendigkeit, Syntax auswendig zu lernen.
🔒
Datenschutzorientierte Verarbeitung
Die gesamte Generierung läuft in deinem Browser. Es werden keine Zeitplandaten an einen Server gesendet. Deine Cron-Ausdrücke und Job-Konfigurationen bleiben auf deinem Gerät.
Sofortige Ausgabe mit Vorschau
Sieh dir den generierten Cron-Ausdruck und eine Vorschau der nächsten geplanten Ausführungszeiten während des Erstellens an. Überprüfe, ob der Zeitplan korrekt ist, bevor du ihn in deine Konfiguration kopierst.
📋
Kein Konto erforderlich
Öffne die Seite und beginne mit dem Erstellen. Keine Anmeldung, kein API-Schlüssel, keine Installation. Funktioniert auf jedem Gerät mit einem modernen Browser, einschließlich Mobilgeräten.

Anwendungsfälle für den Cron-Generator

Frontend-Entwickler
Erstelle Cron-Ausdrücke für Admin-Panels und Planungs-UIs. Generiere die korrekte Syntax für benutzerorientierte Zeitplanauswähler, die Cron-Strings in der Datenbank speichern.
Backend-Entwickler
Erstelle Cron-Ausdrücke für Task-Warteschlangen wie Celery, Sidekiq und Bull. Generiere den Zeitplan-String, überprüfe die nächsten Ausführungen und füge ihn in deine Job-Konfiguration ein.
DevOps / SRE
Generiere Cron-Zeitpläne für Kubernetes CronJobs, CI/CD-Pipelines und Infrastrukturautomatisierung. Erstelle Ausdrücke für Backup-Fenster, Zertifikatserneuerung und Log-Rotation ohne Syntaxfehler.
QA-Ingenieur
Erstelle Test-Cron-Ausdrücke, die in bestimmten Intervallen für Integrationstests ausgelöst werden. Generiere Zeitpläne, die vorhersehbare Ausführungszeiten erzeugen, um das Scheduler-Verhalten zu validieren.
Dateningenieur
Erstelle Cron-Ausdrücke für ETL-Pipeline-Trigger und Datensynchronisierungszeitpläne. Generiere sich nicht überschneidende Zeitpläne für Extraktion, Transformation und Ladestufen mit präzisem Timing.
Student / Lernender
Lerne Cron-Syntax durch Experimentieren mit dem visuellen Builder. Ändere einzelne Felder und beobachte, wie sich der Ausdruck und die nächsten Ausführungszeiten ändern. Entwickle ein Gefühl für Wildcards, Bereiche und Schrittwerte.

Häufige Cron-Zeitplan-Voreinstellungen

Die folgende Tabelle listet Cron-Ausdrücke für die am häufigsten verwendeten Zeitpläne auf. Die meisten Produktions-Jobs fallen in eines dieser Muster. Passe einzelne Felder an dein tatsächliches Timing an.

ZeitplanAusdruckTypische Verwendung
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

Aufbau von Cron-Ausdrücken

Jeder Cron-Ausdruck hat genau fünf Felder, die von links nach rechts gelesen werden. Jedes Feld akzeptiert bestimmte Werte und Operatoren. Diese Regeln zu kennen reicht aus, um jeden Zeitplan zu schreiben, der in der Produktion vorkommt.

Fünffelder-Cron-Ausdruck-Layout:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

Vier Operatoren steuern, wie Werte innerhalb jedes Feldes abgeglichen werden. Du kannst sie kombinieren: 1-5/2 im Wochentag-Feld bedeutet Montag, Mittwoch, Freitag (Bereich 1-5, Schritt 2).

OperatorSyntaxBeispielErgebnis
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

Code-Beispiele

So erstellst und registrierst du Cron-Zeitpläne in Node.js, Python, Go und 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

Häufig gestellte Fragen

Was ist die korrekte Feldreihenfolge in einem Cron-Ausdruck?
Die standardmäßige Fünffeld-Reihenfolge lautet: Minute (0-59), Stunde (0-23), Monatstag (1-31), Monat (1-12), Wochentag (0-6, wobei 0 Sonntag ist). Diese Reihenfolge ist durch POSIX definiert und wird von crontab, Kubernetes, GitHub Actions und den meisten Cron-Bibliotheken verwendet. Einige Werkzeuge wie Quartz Scheduler stellen ein Sekundenfeld voran, was sechs Felder ergibt, aber das Fünffeld-Layout ist der universelle Standard.
Wie generiere ich einen Cron-Ausdruck für 'alle N Minuten'?
Verwende den Schritt-Operator im Minutenfeld: */N. Für alle 5 Minuten schreibe */5 * * * *. Für alle 15 Minuten schreibe */15 * * * *. Der Schritt-Operator teilt den Bereich des Feldes gleichmäßig auf. Beachte, dass */7 keine Ausführungen alle 7 Minuten über Stundengrenzen hinweg erzeugt; es erzeugt Ausführungen bei den Minuten 0, 7, 14, 21, 28, 35, 42, 49, 56 und setzt dann bei der nächsten Stunde auf 0 zurück.
Kann ich einen Cron-Ausdruck generieren, der am letzten Tag jedes Monats läuft?
Standard-POSIX-cron hat keinen 'letzter Tag des Monats'-Operator. Du kannst 0 0 L * * weder in crontab noch in Kubernetes CronJobs schreiben. Workarounds umfassen die Planung für die Tage 28-31 und das Hinzufügen einer Shell-Prüfung ([ $(date +%d -d tomorrow) -eq 01 ]) oder die Verwendung einer erweiterten Cron-Implementierung wie Quartz, die den L-Modifikator unterstützt. AWS EventBridge Rate-Ausdrücke können den letzten Tag ebenfalls nativ ansprechen.
Was ist der Unterschied zwischen einem Cron-Generator und einem Cron-Parser?
Ein Cron-Generator nimmt deine Planungsanforderungen (z. B. 'jeden Werktag um 9 Uhr') und gibt den korrekten Cron-Ausdruck aus (0 9 * * 1-5). Ein Cron-Parser arbeitet umgekehrt: Er nimmt einen vorhandenen Ausdruck und erstellt eine menschenlesbare Beschreibung. Verwende den Generator beim Erstellen neuer Zeitpläne. Verwende den Parser beim Überprüfen oder Debuggen vorhandener.
Wie vermeide ich überlappende Cron-Jobs?
Cron selbst verhindert keine überlappenden Ausführungen. Wenn ein Job, der jede Minute geplant ist, 90 Sekunden dauert, überlappen sich zwei Instanzen. Um dies zu verhindern, verwende eine Lock-Datei (flock in bash), ein verteiltes Lock (Redis, etcd) oder die integrierte Nebenläufigkeitsrichtlinie deines Schedulers. Kubernetes CronJobs haben ein concurrencyPolicy-Feld, das auf Forbid oder Replace gesetzt werden kann. In Schedulern auf Anwendungsebene wie Celery verwende den Solo-Pool oder ein Lock auf Task-Ebene.
Ist 0 oder 1 der erste Wochentag in cron?
In POSIX-cron ist 0 Sonntag und 6 Samstag. Sowohl 0 als auch 7 stehen in den meisten Implementierungen für Sonntag. Quartz Scheduler verwendet eine andere Konvention, bei der 1 Sonntag und 7 Samstag ist. Wenn dein System benannte Tage unterstützt (SUN, MON, TUE), verwende diese anstelle von Zahlen, um Verwechslungen zwischen Plattformen zu vermeiden.
Wie generiere ich einen Cron-Ausdruck für eine bestimmte Zeitzone?
Traditionelles crontab verwendet die lokale Zeitzone des Systems. Du kannst die TZ-Variable in der crontab-Datei setzen (TZ=America/New_York) auf einigen Systemen. Kubernetes CronJobs unterstützen ein .spec.timeZone-Feld seit Version 1.25. AWS EventBridge und Google Cloud Scheduler erlauben die Angabe der Zeitzone pro Zeitplan. Dokumentiere die erwartete Zeitzone immer zusammen mit dem Cron-Ausdruck in deiner Konfiguration.