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
* * * * * 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.