DevToolBoxKOSTENLOS
Blog

Cron-Ausdruck Generator & Parser: Syntax, Beispiele & Code-Anleitung

17 Min. Lesezeitvon DevToolBox

Ob Sie Serverwartung automatisieren, Datenpipelines planen oder CI/CD-Workflows auslosen - der Cron-Ausdruck ist die universelle Sprache der zeitbasierten Aufgabenplanung. Ein Cron-Ausdruck-Generator hilft beim visuellen Erstellen, wahrend ein Cron-Parser kryptische Zeichenketten in lesbare Beschreibungen ubersetzt. Dieser Leitfaden deckt alles ab, von der Cron-Syntax bis zu praktischen Beispielen in JavaScript, Python, Bash und Cloud-Plattformen.

Testen Sie unser kostenloses Online-Tool zum Generieren und Parsen von Cron-Ausdrucken.

Was ist ein Cron-Ausdruck?

Ein Cron-Ausdruck ist eine kompakte Zeichenkette zur Definition wiederkehrender Zeitplane. Der Name stammt vom griechischen chronos (Zeit) und dem Unix-cron-Daemon. Cron ist zum Standard fur Aufgabenplanung geworden.

Im klassischen Unix-Crontab-Format besteht ein Cron-Ausdruck aus funf Feldern: Minute Stunde Tag Monat Wochentag. Jedes Feld akzeptiert Zahlen, Platzhalter, Bereiche, Listen und Schritte.

Heute werden Cron-Ausdrucke in Kubernetes CronJobs, GitHub Actions, AWS EventBridge und Vercel Cron verwendet. Das Verstandnis der Cron-Syntax ist fur jeden Entwickler unerlasslich.

Cron-Ausdruck-Syntax erklart

Der Standard-Cron-Ausdruck verwendet funf Felder. Jedes Feld stellt eine Zeiteinheit dar:

FeldWerteSonderzeichenBeschreibung
Minute0-59* , - /Ausfuhrungsminute
Stunde0-23* , - /Stunde (24h-Format)
Tag1-31* , - / ? L WTag des Monats
Monat1-12* , - /Monat des Jahres
Wochentag0-7* , - / ? L #Tag der Woche

Sonderzeichen: * passt auf alle Werte. Komma , trennt Listen. Bindestrich - definiert Bereiche. Schragstrich / definiert Schritte (z.B. */5 = alle 5 Minuten).

Das Format ist: * * * * * (Minute Stunde Tag Monat Wochentag). Dieses Funf-Felder-Muster ist das Herzstuck jeder Cron-Zeitplan-Definition.

Cron-Ausdruck-Beispieltabelle

Hier sind die haufigsten Cron-Ausdruck-Beispiele aus Produktionssystemen:

Cron-AusdruckBeschreibung
* * * * *Jede Minute
*/5 * * * *Alle 5 Minuten
0 * * * *Stundlich
0 0 * * *Taglich um Mitternacht
0 9 * * 1-5Werktags um 9 Uhr
0 0 1 * *Erster Tag jedes Monats

Codebeispiele fur Cron-Jobs

JavaScript / Node.js Cron-Jobs

Node.js bietet node-cron, cron, croner und Bree fur die Aufgabenplanung:

// ===== node-cron (most popular) =====
// npm install node-cron
const cron = require('node-cron');

// Run every 5 minutes
cron.schedule('*/5 * * * *', () => {
  console.log('Running task every 5 minutes');
  // Your task logic here
});

// Run weekdays at 9:00 AM
cron.schedule('0 9 * * 1-5', () => {
  console.log('Good morning! Running weekday task.');
}, {
  timezone: 'America/New_York'
});

// Validate a cron expression
console.log(cron.validate('*/5 * * * *')); // true
console.log(cron.validate('60 * * * *'));  // false

// ===== cron npm package =====
// npm install cron
const { CronJob } = require('cron');

const job = new CronJob(
  '0 */6 * * *',   // every 6 hours
  function () {
    console.log('Running every 6 hours');
  },
  null,             // onComplete
  true,             // start immediately
  'America/Chicago' // timezone
);

// ===== croner (modern, zero-dependency) =====
// npm install croner
import { Cron } from 'croner';

// Run every minute
const task = new Cron('* * * * *', () => {
  console.log('Tick every minute');
});

// Run at specific time, get next run
const next = task.nextRun();
console.log('Next execution:', next);

// Stop the job
task.stop();

// ===== Bree (worker-thread scheduler) =====
// npm install bree
const Bree = require('bree');

const bree = new Bree({
  jobs: [
    {
      name: 'backup',
      cron: '0 2 * * *',   // daily at 2 AM
      path: './jobs/backup.js'
    },
    {
      name: 'cleanup',
      cron: '0 0 * * 0',   // weekly on Sunday
      path: './jobs/cleanup.js'
    }
  ]
});

bree.start();

Python Cron-Planung

Python bietet schedule, APScheduler, python-crontab und Celery Beat:

# ===== schedule library (human-friendly) =====
# pip install schedule
import schedule
import time

def backup_database():
    print("Backing up database...")

def send_report():
    print("Sending daily report...")

schedule.every(5).minutes.do(backup_database)
schedule.every().day.at("09:00").do(send_report)
schedule.every().monday.at("08:30").do(send_report)

while True:
    schedule.run_pending()
    time.sleep(1)

# ===== APScheduler (enterprise-grade) =====
# pip install apscheduler
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger

scheduler = BlockingScheduler()

# Using cron expression syntax
@scheduler.scheduled_job(CronTrigger.from_crontab('*/10 * * * *'))
def cleanup_temp_files():
    print("Cleaning temp files every 10 minutes")

# Using keyword arguments
@scheduler.scheduled_job('cron', hour=9, minute=0, day_of_week='mon-fri')
def weekday_report():
    print("Weekday report at 9:00 AM")

# First Monday of each month at 3 AM
@scheduler.scheduled_job('cron', day='1-7', day_of_week='mon', hour=3)
def monthly_audit():
    print("Monthly audit")

scheduler.start()

# ===== python-crontab (manage system crontab) =====
# pip install python-crontab
from crontab import CronTab

cron = CronTab(user='myuser')

# Create a new cron job
job = cron.new(
    command='/usr/bin/python3 /opt/app/backup.py >> /var/log/backup.log 2>&1'
)
job.setall('0 2 * * *')  # Daily at 2 AM
job.set_comment('Nightly database backup')
job.enable()

# List all cron jobs
for job in cron:
    print(f"{job.slices} -> {job.command}")

cron.write()  # Save changes

# ===== Celery Beat (distributed scheduling) =====
# pip install celery
# celeryconfig.py
from celery.schedules import crontab

beat_schedule = {
    'cleanup-every-hour': {
        'task': 'tasks.cleanup',
        'schedule': crontab(minute=0, hour='*/1'),
    },
    'weekly-report': {
        'task': 'tasks.send_report',
        'schedule': crontab(hour=9, minute=0, day_of_week=1),
    },
}

Bash / Linux Crontab-Befehle

Unter Linux/macOS: crontab -e zum Bearbeiten, crontab -l zum Auflisten:

# ===== Essential crontab commands =====

# Edit your user crontab
crontab -e

# List current cron jobs
crontab -l

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

# Edit another user's crontab (requires root)
sudo crontab -u www-data -e

# ===== Example crontab file =====
# Set environment variables at the top
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin
MAILTO=admin@example.com
TZ=UTC

# m h dom mon dow  command

# Backup database every night at 2 AM
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

# Run cleanup every 15 minutes with flock
*/15 * * * * flock -n /tmp/cleanup.lock /opt/scripts/cleanup.sh

# Send report on weekdays at 9 AM
0 9 * * 1-5 /opt/scripts/daily-report.sh 2>&1 | logger -t daily-report

# Rotate logs on the 1st of each month
0 0 1 * * /usr/sbin/logrotate /etc/logrotate.conf

# Health check every minute (ping monitoring service)
* * * * * curl -fsS --retry 3 https://hc-ping.com/your-uuid > /dev/null

# ===== System crontab (/etc/cron.d/) =====
# /etc/cron.d/myapp (includes username field)
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin

# Note: system crontab includes a user field
*/5 * * * * www-data /opt/myapp/cron/process-queue.sh
0 3 * * * root /opt/myapp/cron/maintenance.sh

# ===== Logging best practices =====

# Log with timestamp
0 * * * * /opt/scripts/job.sh 2>&1 | while read line; do \
  echo "$(date '+\%Y-\%m-\%d \%H:\%M:\%S') $line"; \
done >> /var/log/myjob.log

# MAILTO for error notifications
MAILTO=ops-team@example.com
# Only errors are emailed (stdout goes to log, stderr to email)
0 */6 * * * /opt/scripts/etl.sh >> /var/log/etl.log

Cloud & CI/CD Cron-Planung

Cron-Ausdrucke werden in GitHub Actions, AWS EventBridge, Kubernetes CronJob und Vercel Cron verwendet:

# ===== GitHub Actions scheduled workflow =====
# .github/workflows/scheduled.yml
name: Scheduled Tasks
on:
  schedule:
    # Run every day at 6 AM UTC
    - cron: '0 6 * * *'
    # Run every Monday at 9 AM UTC
    - cron: '0 9 * * 1'
  workflow_dispatch: # Allow manual trigger

jobs:
  daily-task:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./scripts/daily-task.sh

---
# ===== AWS EventBridge (CloudWatch) cron =====
# Note: AWS cron has 6 fields (includes year)
# Format: minute hour day-of-month month day-of-week year

# Every 5 minutes
aws events put-rule \
  --name "every-5-min" \
  --schedule-expression "cron(*/5 * * * ? *)"

# Weekdays at 9 AM UTC
aws events put-rule \
  --name "weekday-morning" \
  --schedule-expression "cron(0 9 ? * MON-FRI *)"

# First day of each quarter
aws events put-rule \
  --name "quarterly" \
  --schedule-expression "cron(0 0 1 1,4,7,10 ? *)"

---
# ===== Kubernetes CronJob =====
# k8s-cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: database-backup
spec:
  schedule: "0 2 * * *"           # Daily at 2 AM
  timeZone: "America/New_York"    # Available since k8s 1.27
  concurrencyPolicy: Forbid       # Prevent overlapping runs
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 3
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: myapp/backup:latest
            command: ["/bin/sh", "-c", "./backup.sh"]
            env:
            - name: DB_HOST
              valueFrom:
                secretKeyRef:
                  name: db-credentials
                  key: host
          restartPolicy: OnFailure

---
# ===== Vercel cron (vercel.json) =====
{
  "crons": [
    {
      "path": "/api/cron/daily-cleanup",
      "schedule": "0 0 * * *"
    },
    {
      "path": "/api/cron/hourly-sync",
      "schedule": "0 * * * *"
    },
    {
      "path": "/api/cron/weekly-report",
      "schedule": "0 9 * * 1"
    }
  ]
}

Erweiterte Cron-Funktionen

Viele Implementierungen erweitern die Syntax um ein Sekundenfeld (6 Felder) und ein Jahresfeld (7 Felder). Quartz, node-cron und Spring Framework unterstutzen diese erweiterten Formate.

Erweiterte Sonderzeichen: L = letzter, W = nachster Werktag, # = N-tes Vorkommen eines Wochentags.

Nicht-standardmasige Kurzformen: @reboot, @yearly, @monthly, @weekly, @daily, @hourly.

Cron-Job-Debugging und Uberwachung

Zeitzonen-Probleme: Setzen Sie immer TZ=UTC in Ihrer Crontab.

PATH-Probleme: Der Cron-Daemon verwendet eine minimale Umgebung. Verwenden Sie absolute Pfade.

Ausgabe nicht erfasst: Leiten Sie stdout und stderr immer in eine Log-Datei um.

Uberlappende Ausfuhrungen: Verwenden Sie flock zur Vermeidung.

Cron-Job Best Practices

Beschreibende Kommentare: Dokumentieren Sie jeden Crontab-Eintrag.

Ausgabeumleitung und Logging: In dedizierte Log-Dateien umleiten.

Gegenseitiger Ausschluss mit flock: Uberlappungen verhindern.

SHELL und PATH setzen: Umgebung explizit deklarieren.

Absolute Pfade: Uberall absolute Pfade verwenden.

Uberwachungsdienste: healthchecks.io oder Cronitor verwenden.

Zeitzonen-Bewusstsein: UTC verwenden und dokumentieren.

Haufig gestellte Fragen

Was bedeuten die funf Felder eines Cron-Ausdrucks?

Die funf Felder sind: Minute (0-59), Stunde (0-23), Tag des Monats (1-31), Monat (1-12), Wochentag (0-7). Jedes Feld akzeptiert Werte, Platzhalter (*), Bereiche, Listen und Schritte.

Was ist der Unterschied zwischen Cron und systemd Timern?

Cron ist der traditionelle Unix-Planer. Systemd Timer sind die moderne Alternative unter Linux: sie unterstutzen Ereignisse, behandeln verpasste Ausfuhrungen und integrieren sich in journalctl. Cron bleibt der Standard in der Cloud.

Wie fuhre ich einen Cron-Job alle N Minuten aus?

Verwenden Sie die Schritt-Syntax */N im Minutenfeld. Beispiele: alle 5 Minuten = "*/5 * * * *", alle 15 Minuten = "*/15 * * * *". Der Schrittwert sollte 60 teilen.

Verwandte Leitfaden:

Das Beherrschen von Cron-Ausdrucken ist fur jeden Entwickler unerlasslich. Nutzen Sie unser kostenloses Tool zum Generieren und Parsen.

Generieren und parsen Sie Cron-Ausdrucke mit unserem kostenlosen Tool.

𝕏 Twitterin LinkedIn
War das hilfreich?

Bleiben Sie informiert

Wöchentliche Dev-Tipps und neue Tools.

Kein Spam. Jederzeit abbestellbar.

Verwandte Tools ausprobieren

⏰Cron Expression Parser⏰Cron Expression GeneratorâČCrontab Generator🔍Cron Expression Parser

Verwandte Artikel

Cron-AusdrĂŒcke Beispiele: Alle 5 Minuten, tĂ€glich, wöchentlich

Cron-AusdrĂŒcke mit praktischen Beispielen meistern.

Cron fĂŒr Serverless: GitHub Actions, Vercel Cron und Cloudflare Workers

Meistern Sie Cron-AusdrĂŒcke auf Serverless-Plattformen. Syntax, Zeitzonenfallen und Beispiele.

Docker Compose Spickzettel: Services, Volumes und Netzwerke

Docker Compose Referenz: Service-Definitionen, Volumes, Netzwerke, Umgebungsvariablen und Stack-Beispiele.