Så här använder du det
- Skriv eller klistra in ett cron-uttryck, eller välj ett av de vanliga schemana.
- Läs betydelsen på klarspråk. Ogiltiga fält anges med orsaken.
- Kontrollera de kommande 10 körtiderna, som visas i din lokala tidszon. Växla till UTC om din server körs i UTC.
- Kopiera körtiderna för att dela dem, eller justera uttrycket tills schemat är det du behöver.
Så fungerar det
Ett standard cron-uttryck, som används av crontab på Linux (Vixie cron och cronie) och många schemaläggare för CI och hosting, har fem fält åtskilda av mellanslag: minut (0–59), timme (0–23), dag i månaden (1–31), månad (1–12 eller JAN–DEC) och veckodag (0–7 eller SUN–SAT, där både 0 och 7 betyder söndag). Varje fält accepterar * för alla värden, ett enskilt värde, ett intervall som 1-5, en lista som 1,15,30 och ett steg som */15 (vart 15:e värde) eller 9-17/2 (varannan timme från 9 till 17). Namn är skiftlägesokänsliga. Genvägarna @yearly (eller @annually), @monthly, @weekly, @daily (eller @midnight) och @hourly står för 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * respektive 0 * * * *.
Fälten för dag i månaden och veckodag följer en regel som förvånar många. Om något av fälten börjar med * måste en dag uppfylla båda fälten. Om båda fälten är begränsade matchar en dag när något av dem gör det: 0 0 13 * 5 körs den 13:e varje månad och även varje fredag, inte bara fredagen den 13:e. Eftersom villkoret är om fältet börjar med * räknas även ett steg som */2 som obegränsat. Detta överensstämmer med Vixie cron och cronie; en del andra schemaläggare fungerar annorlunda.
Nästa körtider beräknas i din webbläsares tidszon eller i UTC, vilket är vad de flesta servrar och molnschemaläggare använder. Cron själv använder tidszonen för maskinen den körs på. Kring övergången till sommartid skiljer sig riktiga cron-daemoner åt; det här verktyget utelämnar lokala tider som inte finns när klockan flyttas fram och listar en upprepad timme en gång. Utökad syntax stöds inte: Quartz-uttryck med sex eller sju fält med sekunder eller år samt specialtecknen ?, L, W och #.
Exempel
Hälsokontroll under kontorstid
*/15 9-17 * * 1-5 betyder var 15:e minut mellan 09:00 och 17:59, måndag till fredag. Den sista körningen varje dag sker 17:45.
Nattlig säkerhetskopiering
30 2 * * * körs klockan 02:30 varje dag. Om servern använder UTC och du befinner dig i New York visar listan över nästa körningar i UTC-läge de tider som servern faktiskt kommer att använda.
Fällan med dagfältet
0 9 1 * 1 ser ut som ”9:00 den första i månaden om det är en måndag”, men den körs klockan 09:00 den 1:a varje månad och även varje måndag. För att bara köra den första måndagen, schemalägg 0 9 1-7 * * och kontrollera veckodagen inuti skriptet.
Vanliga frågor
Vad betyder */5 i cron?
Det betyder vart femte värde i fältet, med början på det lägsta värdet. I minutfältet körs */5 vid minuterna 0, 5, 10 … 55. I timfältet körs */5 vid 0, 5, 10, 15 och 20, så gapet från 20:00 till midnatt är fyra timmar, inte fem.
Varför körs mitt jobb fler dagar än jag förväntade mig?
När både fältet för dag i månaden och veckodagsfältet är begränsade kör cron på dagar som matchar något av dem. Till exempel körs 0 0 15 * 1 den 15:e och varje måndag. Sätt ett av de två fälten till * för att endast kräva det andra.
Vilken tidszon använder cron?
Systemtidszonen för servern som kör cron-daemonen, om inte crontab-filen anger CRON_TZ eller TZ (stöds av cronie). Molnschemaläggare använder ofta UTC som standard. Använd UTC-växeln för att se tiderna som en UTC-server skulle använda.
Kan jag använda sekunder eller ett fält för år?
Inte i standard-cron, som har en minuts upplösning och fem fält. Sex- och sjufältsformat med sekunder och år hör till Quartz, Spring och liknande bibliotek och stöds inte av det här verktyget.
Är 0 eller 7 söndag?
Båda. I veckodagsfältet betyder 0 och 7 båda söndag, 1 är måndag och 6 är lördag. Du kan också skriva trebokstavsnamnen SUN till SAT.
Integritet
Uttrycket analyseras och körtiderna beräknas i din webbläsare. Inget du anger laddas upp, lagras eller ingår i analysverktyg.