Cron Expression Generator

Generuje cron výrazy vizuálně pomocí stavitele krok za krokem

Rychlá nastavení

Minuta

Hodina

Den v měsíci

Měsíc

Den v týdnu

Cron výraz

0 9 * * *

minute hour day(month) month day(week)

Co je generátor cron výrazů?

Generátor cron výrazů je nástroj, který sestavuje řetězce cron plánování prostřednictvím vizuálního rozhraní, aniž byste je museli psát ručně. Cron výrazy jsou pětipolicové řetězce (minuta, hodina, den v měsíci, měsíc, den v týdnu), které definují, kdy má opakující se úloha běžet. Formát pochází z původního unixového démona cron z roku 1979 a dnes se používá v crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler a desítkách knihoven pro plánování úloh.

Psaní cron výrazů z paměti je běžným zdrojem chyb. Pět polí se vzájemně ovlivňuje neintuitivními způsoby: kroková hodnota jako */15 v poli minut produkuje spuštění v 0, 15, 30 a 45, zatímco 5/15 začíná v minutě 5 a dává 5, 20, 35, 50. Kombinace dne v měsíci a dne v týdnu s hodnotami, které nejsou zástupnými znaky, vytváří podmínku OR, nikoliv AND, což překvapí i zkušené inženýry. Vizuální generátor tuto nejednoznačnost odstraňuje tím, že vám umožní vybrat požadované plánování a automaticky vytvoří správnou syntaxi.

Generátor cron výrazů se liší od parseru cron výrazů. Parser vezme existující výraz a vysvětlí ho srozumitelně. Generátor pracuje v opačném směru: popíšete plánování, které potřebujete, a nástroj vypíše odpovídající cron řetězec. Generátor používejte při vytváření nové naplánované úlohy; parser při auditování nebo ladění stávajících.

Proč použít tento generátor cron výrazů?

Psaní cron výrazu ručně znamená zapamatovat si pořadí polí, rozsahy hodnot a pravidla operátorů. Jediné chybně umístěné pole změní denní úlohu na úlohu spouštěnou každou minutu. Tento generátor vám umožní vizuálně zvolit plánování a výsledek zkopírovat jedním kliknutím.

🖱️
Vizuální stavitel plánování
Vyberte hodnoty minut, hodin, dnů, měsíců a dnů v týdnu pomocí rozbalovacích nabídek a přepínačů. Cron výraz se aktualizuje v reálném čase při každé změně pole. Není třeba si pamatovat syntaxi.
🔒
Zpracování s důrazem na soukromí
Celé generování probíhá ve vašem prohlížeči. Na server se neodesílají žádná data plánování. Vaše cron výrazy a konfigurace úloh zůstávají na vašem zařízení.
Okamžitý výstup s náhledem
Při sestavování vidíte vygenerovaný cron výraz a náhled příštích naplánovaných spuštění. Ověřte správnost plánování ještě před vložením do konfigurace.
📋
Bez nutnosti účtu
Otevřete stránku a začněte sestavovat. Bez přihlášení, API klíče nebo instalace. Funguje na jakémkoli zařízení s moderním prohlížečem, včetně mobilního.

Případy použití generátoru cron výrazů

Frontend vývojář
Sestavte cron výrazy pro administrátorská rozhraní a uživatelská rozhraní plánování. Vygenerujte správnou syntaxi pro výběry plánování přístupné uživatelům, které ukládají cron řetězce do databáze.
Backend inženýr
Vytvořte cron výrazy pro fronty úloh jako Celery, Sidekiq a Bull. Vygenerujte řetězec plánování, ověřte příští spuštění a vložte ho do konfigurace úlohy.
DevOps / SRE
Generujte cron plánování pro Kubernetes CronJobs, CI/CD pipeline a automatizaci infrastruktury. Sestavte výrazy pro zálohovací okna, obnovu certifikátů a rotaci logů bez syntaktických chyb.
QA inženýr
Vytvořte testovací cron výrazy, které se spouštějí v konkrétních intervalech pro integrační testování. Generujte plánování s předvídatelnými časy spuštění pro ověření chování plánovače.
Datový inženýr
Sestavte cron výrazy pro spouštění ETL pipeline a plánování synchronizace dat. Generujte nepřekrývající se plánování pro fáze extrakce, transformace a načítání s přesným načasováním.
Student / Začátečník
Naučte se cron syntaxi experimentováním s vizuálním stavitelem. Měňte jednotlivá pole a sledujte, jak se mění výraz a časy příštích spuštění. Získejte intuici pro zástupné znaky, rozsahy a krokové hodnoty.

Běžné přednastavené cron plánování

Tabulka níže uvádí cron výrazy pro nejčastěji používaná plánování. Většina produkčních úloh spadá do jednoho z těchto vzorů. Upravte jednotlivá pole podle svého konkrétního načasování.

PlánováníVýrazTypické použití
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

Stavební kameny cron výrazů

Každý cron výraz má přesně pět polí, čtených zleva doprava. Každé pole přijímá konkrétní hodnoty a operátory. Znalost těchto pravidel stačí k zapsání jakéhokoli plánování, se kterým se v produkci setkáte.

Rozložení cron výrazu s pěti poli:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

Čtyři operátory řídí, jak jsou hodnoty porovnávány v každém poli. Lze je kombinovat: 1-5/2 v poli dne v týdnu znamená pondělí, středa, pátek (rozsah 1-5, krok 2).

OperátorSyntaxePříkladVýsledek
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

Příklady kódu

Jak vytvořit a zaregistrovat cron plánování v Node.js, Pythonu, Go a 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

Nejčastější dotazy

Jaké je správné pořadí polí v cron výrazu?
Standardní pořadí pěti polí je: minuta (0-59), hodina (0-23), den v měsíci (1-31), měsíc (1-12), den v týdnu (0-6, kde 0 je neděle). Toto pořadí definuje POSIX a používají ho crontab, Kubernetes, GitHub Actions a většina cron knihoven. Některé nástroje jako Quartz Scheduler přidávají pole sekund na začátek, čímž vzniká šest polí, ale pětipolicové rozložení je univerzálním výchozím nastavením.
Jak vygenerovat cron výraz pro 'každých N minut'?
Použijte krokový operátor v poli minut: */N. Pro každých 5 minut napište */5 * * * *. Pro každých 15 minut napište */15 * * * *. Krokový operátor rovnoměrně rozdělí rozsah pole. Upozornění: */7 neprodukuje spuštění každých 7 minut přes hranice hodin; produkuje spuštění v minutách 0, 7, 14, 21, 28, 35, 42, 49, 56, poté se na začátku další hodiny resetuje na 0.
Lze vygenerovat cron výraz, který se spustí poslední den každého měsíce?
Standardní POSIX cron nemá operátor 'poslední den v měsíci'. Nelze napsat 0 0 L * * v crontab nebo Kubernetes CronJobs. Alternativy zahrnují plánování na dny 28-31 s přidaným shellovým testem ([ $(date +%d -d tomorrow) -eq 01 ]), nebo použití rozšířené implementace cron jako Quartz, která podporuje modifikátor L. AWS EventBridge výrazy pro rychlost také umožňují nativně cílit na poslední den.
Jaký je rozdíl mezi generátorem cron výrazů a parserem cron výrazů?
Generátor cron výrazů vezme vaše požadavky na plánování (např. 'každý pracovní den v 9:00') a vypíše správný cron výraz (0 9 * * 1-5). Parser cron výrazů pracuje obráceně: vezme existující výraz a vytvoří srozumitelný popis. Generátor používejte při vytváření nových plánování. Parser používejte při přezkoumávání nebo ladění stávajících.
Jak se vyhnout překrývajícím se cron úlohám?
Cron sám o sobě nepředchází překrývajícím se spuštěním. Pokud úloha plánovaná každou minutu trvá 90 sekund, dvě instance se překryjí. Abyste tomu zabránili, použijte soubor zámku (flock v bash), distribuovaný zámek (Redis, etcd) nebo vestavěnou politiku souběžnosti vašeho plánovače. Kubernetes CronJobs mají pole concurrencyPolicy, které lze nastavit na Forbid nebo Replace. V aplikačních plánovačích jako Celery použijte solo pool nebo zámek na úrovni úlohy.
Je v cron první den týdne 0 nebo 1?
V POSIX cron je 0 neděle a 6 sobota. Hodnoty 0 i 7 reprezentují neděli ve většině implementací. Quartz Scheduler používá jinou konvenci, kde 1 je neděle a 7 je sobota. Pokud váš systém podporuje pojmenované dny (SUN, MON, TUE), používejte je místo čísel, abyste předešli záměně napříč platformami.
Jak vygenerovat cron výraz pro konkrétní časové pásmo?
Tradiční crontab používá místní časové pásmo systému. Na některých systémech lze v souboru crontab nastavit proměnnou TZ (TZ=America/New_York). Kubernetes CronJobs podporují pole .spec.timeZone od verze 1.25. AWS EventBridge a Google Cloud Scheduler umožňují zadat časové pásmo pro každé plánování zvlášť. Vždy dokumentujte očekávané časové pásmo vedle cron výrazu ve vaší konfiguraci.