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.
Případy použití generátoru cron výrazů
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ýraz | Typické 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 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 |
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.
Č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átor | Syntaxe | Příklad | Výsledek |
|---|---|---|---|
| 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 |
Příklady kódu
Jak vytvořit a zaregistrovat cron plánování v Node.js, Pythonu, Go a 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