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.
Användningsfall för cron-generatorn
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.
| Schema | Uttryck | Typisk 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 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 |
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.
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).
| Operator | Syntax | Exempel | Ger |
|---|---|---|---|
| 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 |
Kodexempel
Så här skapar och registrerar du cron-scheman i Node.js, Python, Go och 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