Cron Expression Generator

Generera cron-uttryck visuellt med en steg-för-steg-byggare

Snabbförinställningar

Minut

Timme

Dag i månaden

Månad

Veckodag

Cron-uttryck

0 9 * * *

minute hour day(month) month day(week)

Vad är en cron-uttrycksgenerator?

En cron-uttrycksgenerator är ett verktyg som bygger cron-schemaläggningssträngar via ett visuellt gränssnitt i stället för att du ska behöva skriva dem för hand. Cron-uttryck är strängar med fem fält (minut, timme, dag i månaden, månad, veckodag) som definierar när en återkommande uppgift ska köras. Formatet härstammar från den ursprungliga Unix cron-demonen från 1979 och används nu i crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler och ett flertal jobbschemaläggningsbibliotek.

Att skriva cron-uttryck ur minnet är en vanlig källa till fel. De fem fälten samverkar på icke-uppenbara sätt: ett stegvärde som */15 i minutfältet ger körningar kl. 0, 15, 30 och 45, medan 5/15 börjar vid minut 5 och ger 5, 20, 35, 50. Att kombinera dag-i-månaden och veckodag med värden som inte är jokertecken skapar ett ELLER-villkor, inte ett OCH-villkor, vilket överraskar även erfarna ingenjörer. En visuell generator tar bort denna tvetydighet genom att låta dig välja det schema du vill ha och automatiskt producera rätt syntax.

En cron-generator skiljer sig från en cron-tolk. En tolk tar ett befintligt uttryck och förklarar det på naturligt språk. En generator arbetar i motsatt riktning: du beskriver det schema du behöver och verktyget levererar den matchande cron-strängen. Använd generatorn när du skapar ett nytt schemalagt jobb och tolkaren när du granskar eller felsöker befintliga jobb.

Varför använda denna cron-generator?

Att bygga ett cron-uttryck för hand innebär att memorera fältordning, värdeintervall och operatorregler. Ett enda felplacerat fält förvandlar ett dagligt jobb till ett som körs varje minut. Denna generator låter dig välja ditt schema visuellt och kopiera resultatet med ett klick.

🖱️
Visuell schemaläggningsbyggare
Välj minut-, timme-, dag-, månads- och veckodagsvärden från rullgardinsmenyer och växlar. Cron-uttrycket uppdateras i realtid när du ändrar varje fält. Inget behov av att memorera syntax.
🔒
Integritetsfokuserad bearbetning
All generering sker i din webbläsare. Inga schemaläggningsdata skickas till en server. Dina cron-uttryck och jobbkonfigurationer stannar på din enhet.
Omedelbart resultat med förhandsvisning
Se det genererade cron-uttrycket och en förhandsvisning av de nästa schemalagda körtiderna medan du bygger. Kontrollera att schemat är korrekt innan du kopierar det till din konfiguration.
📋
Inget konto krävs
Öppna sidan och börja bygga. Ingen inloggning, ingen API-nyckel, ingen installation. Fungerar på valfri enhet med en modern webbläsare, inklusive mobil.

Användningsfall för cron-generatorn

Frontend-utvecklare
Bygg cron-uttryck för administratörspaneler och schemaläggningsgränssnitt. Generera rätt syntax för användarvända schemaväljare som lagrar cron-strängar i databasen.
Backend-ingenjör
Skapa cron-uttryck för uppgiftsköer som Celery, Sidekiq och Bull. Generera schemaläggningssträngen, verifiera nästa körningar och klistra in den i din jobbkonfiguration.
DevOps / SRE
Generera cron-scheman för Kubernetes CronJobs, CI/CD-pipelines och infrastrukturautomation. Bygg uttryck för säkerhetskopieringsfönster, certifikatförnyelse och loggrotation utan syntaxfel.
QA-ingenjör
Skapa testcron-uttryck som utlöses vid specifika intervall för integrationstestning. Generera scheman med förutsägbara körtider för att validera schemaläggarbeteendet.
Dataingenjör
Bygg cron-uttryck för ETL-pipeline-utlösare och datasynkroniseringsscheman. Generera icke-överlappande scheman för extraherings-, transformations- och laddningssteg med exakt timing.
Student / Nybörjare
Lär dig cron-syntax genom att experimentera med den visuella byggaren. Ändra enskilda fält och se hur uttrycket och nästa körtider förändras. Bygg intuition för jokertecken, intervall och stegvärden.

Vanliga förinställningar för cron-scheman

Tabellen nedan listar cron-uttryck för de vanligaste schemaläggningsbehoven. De flesta produktionsjobb faller inom något av dessa mönster. Justera enskilda fält för att passa din faktiska timing.

SchemaUttryckTypisk användning
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

Byggstenar för cron-uttryck

Varje cron-uttryck har exakt fem fält, lästa från vänster till höger. Varje fält accepterar specifika värden och operatorer. Dessa regler räcker för att skriva vilket schema du än kan stöta på i produktion.

Femfälts layout för cron-uttryck:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

Fyra operatorer styr hur värden matchas inom varje fält. Du kan kombinera dem: 1-5/2 i veckodagsfältet betyder måndag, onsdag, fredag (intervall 1–5, steg 2).

OperatorSyntaxExempelGer
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

Kodexempel

Så här skapar och registrerar du cron-scheman i Node.js, Python, Go och 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

Vanliga frågor

Vilken är den korrekta fältordningen i ett cron-uttryck?
Standardordningen med fem fält är: minut (0–59), timme (0–23), dag i månaden (1–31), månad (1–12), veckodag (0–6, där 0 är söndag). Denna ordning definieras av POSIX och används av crontab, Kubernetes, GitHub Actions och de flesta cron-bibliotek. Vissa verktyg som Quartz Scheduler lägger till ett sekundfält i början, vilket ger sex fält, men femfältslayouten är den universella standarden.
Hur genererar jag ett cron-uttryck för 'var N:e minut'?
Använd stegoperatorn i minutfältet: */N. För var 5:e minut, skriv */5 * * * *. För var 15:e minut, skriv */15 * * * *. Stegoperatorn delar fältets intervall jämnt. Observera att */7 inte ger körningar var 7:e minut över timgränser; det ger körningar vid minuterna 0, 7, 14, 21, 28, 35, 42, 49, 56 och återställs sedan till 0 vid nästa timme.
Kan jag generera ett cron-uttryck som körs den sista dagen i varje månad?
Standard POSIX cron har ingen operator för 'sista dagen i månaden'. Du kan inte skriva 0 0 L * * i crontab eller Kubernetes CronJobs. Lösningar inkluderar att schemalägga för dagar 28–31 och lägga till en skalcheck ([ $(date +%d -d tomorrow) -eq 01 ]), eller att använda en utökad cron-implementation som Quartz med stöd för L-modifikatorn. AWS EventBridge rate-uttryck kan också rikta in sig på den sista dagen direkt.
Vad är skillnaden mellan en cron-generator och en cron-tolk?
En cron-generator tar dina schemaläggningskrav (t.ex. 'varje vardag kl. 9:00') och levererar rätt cron-uttryck (0 9 * * 1-5). En cron-tolk arbetar i omvänd riktning: den tar ett befintligt uttryck och producerar en läsbar beskrivning. Använd generatorn när du skapar nya scheman och tolkaren när du granskar eller felsöker befintliga.
Hur undviker jag överlappande cron-jobb?
Cron förhindrar inte överlappande körningar i sig. Om ett jobb schemalagt för varje minut tar 90 sekunder överlappar två instanser. För att förhindra detta, använd en låsfil (flock i bash), ett distribuerat lås (Redis, etcd) eller din schemaläggares inbyggda konkurrenspolicy. Kubernetes CronJobs har ett concurrencyPolicy-fält som kan sättas till Forbid eller Replace. I schemaläggare på applikationsnivå som Celery, använd solo-poolen eller ett lås på uppgiftsnivå.
Är 0 eller 1 den första veckodagen i cron?
I POSIX cron är 0 söndag och 6 lördag. Både 0 och 7 representerar söndag i de flesta implementationer. Quartz Scheduler använder en annan konvention där 1 är söndag och 7 är lördag. Om ditt system stöder namngivna dagar (SUN, MON, TUE) bör du använda dessa i stället för siffror för att undvika förvirring mellan plattformar.
Hur genererar jag ett cron-uttryck för en specifik tidszon?
Traditionell crontab använder systemets lokala tidszon. Du kan ange TZ-variabeln i crontab-filen (TZ=America/New_York) på vissa system. Kubernetes CronJobs stöder ett .spec.timeZone-fält sedan version 1.25. AWS EventBridge och Google Cloud Scheduler låter dig ange tidszon per schema. Dokumentera alltid den förväntade tidszonen tillsammans med cron-uttrycket i din konfiguration.