raatools/

Cron-uttrycksgenerator

Bygg och avkoda fem-fälts cron-uttryck visuellt.

Format: minute hour day-of-month month day-of-week

Use * for any value, 0-5 for ranges, 1,3,5 for lists, */5 for every N

Cron Expression
* * * * *
Description

every minute

Vad är ett cron-uttryck?

Ett cron-uttryck är ett strängformat som definierar ett schema för att köra upprepade uppgifter automatiskt. Uttrycket består av 5 fält separerade med mellanslag: minut (0-59), timme (0-23), dag i månaden (1-31), månad (1-12) och veckodag (0-7, där 0 och 7 båda är söndag). Varje fält kan innehålla specifika värden, intervall, listor eller jokertecken.

Cron skapades på 1970-talet för Unix-operativsystem och förblir standarden för schemaläggning i Linux/macOS. Moderna molnplattformar (AWS CloudWatch, Google Cloud Scheduler, Azure Functions) och CI/CD-verktyg (GitHub Actions, GitLab CI) använder samma cron-syntax. Att förstå cron-uttryck är en grundläggande Linux-administratörsfärdighet.

Cron-syntax förklarad

Vart och ett av de fem falten accepterar specifika varden och specialtecken. En asterisk (*) betyder 'varje mojligt varde'. Ett tal anger ett specifikt varde. Ett bindestreck (1-5) definierar ett intervall. Ett komma (1,3,5) skapar en lista. Ett snedstreck (*/5) anger ett stegintervall. Genom att kombinera dessa operatorer kan du bygga praktiskt taget vilket schema som helst.

Faltreferens

  • Minut (0-59): Den minut pa timmen nar jobbet kors.
  • Timme (0-23): Timmen pa dygnet i 24-timmarsformat. 0 ar midnatt, 12 ar mitt pa dagen.
  • Dag i manaden (1-31): Kalenderdagen. Inte alla manader har 31 dagar -- cron hoppar over ogiltiga datum automatiskt.
  • Manad (1-12): Kalendermanaden. 1 ar januari, 12 ar december.
  • Veckodag (0-6): Veckodagen. 0 ar sondag, 6 ar lordag. Vissa system accepterar aven 7 for sondag.

Vanliga cron-uttryck

  • 0 0 * * * — 0 0 * * * -- Varje dag vid midnatt.
  • 0 9 * * 1-5 — 0 9 * * 1-5 -- Vardagar kl 09:00.
  • 0 0 1 * * — 0 0 1 * * -- Forsta dagen i varje manad vid midnatt.
  • */15 * * * * — */15 * * * * -- Var 15:e minut.
  • 0 */4 * * * — 0 */4 * * * -- Var 4:e timme pa heltimmen.

Vanliga cron-misstag

Det vanligaste misstaget ar att satta falten i fel ordning. Cron laser alltid minut forst, sedan timme -- sa '0 9' betyder kl 09:00, inte minut 9. En annan fallgrop ar att glomma att serverns tidszon avgir nar cron kors. Om din server ar i UTC men du forvaintar dig lokal tid kommer jobb att koras vid fel timme.

Undvik att schemallagga resurskravande jobb exakt vid midnatt (0 0 * * *) eftersom manga andra cron-jobb kors samtidigt. Sprid dina jobb med nagra minuter for att forhindra belastningstoppar. Var ocksa forsiktig med jobb som tar langre tid an sitt intervall -- om ett jobb kors varje minut men tar 3 minuter far du overlappande instanser.

Basta praxis

Omdirigera alltid cron-utdata till en loggfil (>> /var/log/myjob.log 2>&1) sa att du kan felsoka problem. Anvand absoluta sokvagar for kommandon och skript eftersom cron kors med en minimal PATH-miljo. Testa ditt uttryck med ett verktyg som detta innan du distribuerar till produktion.

For komplexa schemalaggningsbehov, overvag cron-alternativ som systemd-timers (Linux), Celery Beat (Python) eller molnschemalagare (AWS EventBridge, Google Cloud Scheduler). Dessa erbjuder funktioner som omforsoNkslogik, overvaknngspaneler och distribuerad korning som standard-cron saknar.

Vanliga frågor

Vilken tidszon använder cron?

Traditionell Unix cron använder serverns systemtidszon. Detta kan orsaka problem med sommartid — en uppgift schemalagd kl. 02:30 kan hoppa över eller köras dubbelt under sommartidens övergångar. Moderna molntjänster låter dig specificera tidszonen uttryckligen. Bästa praxis: använd UTC för alla cron-jobb för att undvika sommartidsproblem, eller var medveten om din servers tidszon.

Vad händer om ett cron-jobb fortfarande körs när det är dags för nästa exekvering?

Standardmässigt startar cron en ny instans oavsett — du kan sluta med parallella körningar av samma jobb. För att förhindra detta, använd en låsmekanism: flock-kommandot i Linux (flock -n /tmp/myjob.lock /path/to/script) garanterar att bara en instans körs åt gången. Alternativt, låt ditt skript kontrollera en PID-fil vid start.