Cron uttryckssyntax
Ett cron uttryck är fem fält som beskriver när något ska köras. Varje fält säger vilka värden av sin enhet som är godtagbar, och jobbet körs varje minut där alla fem håller med. Det är hela modellen: det finns ingen uppfattning om varaktighet, ingen "var 90:e minut", och inget nästa-körning-tillstånd sparas någonstans.
Fälten läses från vänster till höger som minut, timme, dag i månad, månad, dag i vecka. Exemplen längst ned är de som folk verkligen söker efter, och vart och ett av dem analyseras av denna webbplats egen cron parser innan denna sida är byggd.
Det sista avsnittet listar syntax som ser ut som cron men inte accepteras här: Quartz och Jenkins tillägg, och sexfältiga formen med sekunder. De är värda att känna igen, för ett kopierat uttryck som använder en kommer helt enkelt att misslyckas.
De fem fälten
7En cron rad är fem fält åtskilda av mellanslag, sedan kommandot. Varje fält måste finnas; det finns inget sätt att utelämna ett.
| Uttryck | Intervall | Betydelse |
|---|---|---|
| * * * * * | min hod dom mes dow | De fem fälten i ordning: minut, timme, dag i månad, månad, dag i veckaFem stjärnor betyder varje minut av varje dag — det löst möjliga uttrycket. |
| minute | 0-59 | Första fältet |
| hour | 0-23 | Andra fältet, på ett 24-timmarsklocka |
| day of month | 1-31 | Tredje fältetEn dag som inte finns i en given månad hoppas helt över — 31 körs sju gånger om året, inte tolv. |
| month | 1-12 | Fjärde fältet |
| day of week | 0-7 | Femte fältet, söndag förstBåde 0 och 7 betyder söndag, vilket är varför intervallet körs till sju snarare än sex. |
| 0 5 13 * 5 | När båda dagfälten är begränsade, körs cron på någon av dem — inte bådaDetta körs på 13:e och varje fredag, så det är inte "fredag den 13:e". Det är den enda regeln i cron som överraskar alla. |
Operatorer
10Samma fyra operatorer fungerar i alla fält; bara siffrorna de accepterar ändras.
| Uttryck | Intervall | Betydelse |
|---|---|---|
| * | Varje värde fältet tillåter | |
| 1,15,30 | En lista av individuella värden | |
| 9-17 | Ett inkluderande intervall | |
| */15 | Varje n:te värde över hela fältet*/15 i minutfältet betyder :00, :15, :30 och :45 — det räknas från intervallbotten, inte från nu. | |
| 9-17/2 | Varje n:te värde inom ett intervall | |
| 5/10 | Varje n:te värde från en startpunkt till intervallslut | |
| 0,30 9-17 * * 1-5 | Operatorer kombineras fritt, i valfritt fältPå halvtimmen, mellan nio och fem, måndag till fredag. | |
| JAN-DEC | 1-12 | Månadsnamn, tre bokstäver, skiftlägesokänsligt |
| SUN-SAT | 0-6 | Dagnamn, tre bokstäver, skiftlägesokänsligt |
| 7 | 0 | Söndag, skriven på andra sättet |
Korta genvägar
7Sju namn som ersätter ett helt uttryck. De är en bekvämlighet för crontab filformatet snarare än fältgrammatiken, så en schemaläggare som läser cron strängar behöver inte acceptera dem.
| Uttryck | Intervall | Betydelse |
|---|---|---|
| @hourly | 0 * * * * | Vid toppen av varje timme |
| @daily | 0 0 * * * | En gång om dagen vid midnatt |
| @midnight | 0 0 * * * | Samma som @daily |
| @weekly | 0 0 * * 0 | En gång per vecka, söndag vid midnatt |
| @monthly | 0 0 1 * * | Den första i månaden vid midnatt |
| @yearly | 0 0 1 1 * | Den första januari vid midnatt |
| @annually | 0 0 1 1 * | Samma som @yearly |
Praktiska exempel
14Läs en från höger till vänster när den slutar ge mening: det grovaste fältet är till höger, och det avgör vilka dagar de finare redan får konsulteras.
| Uttryck | Intervall | Betydelse |
|---|---|---|
| * * * * * | Varje minut | |
| */5 * * * * | Var femte minut | |
| 0 * * * * | Varje timme, på klockan | |
| 0,30 * * * * | Var halvtimme | |
| 0 3 * * * | Varje dag klockan 03:00 | |
| 0 9,17 * * * | Två gånger om dagen, klockan 09:00 och 17:00 | |
| */15 9-17 * * 1-5 | Var kvart under kontorstimmar på arbetsdagar | |
| 0 8 * * 1-5 | Arbetsdagar klockan 08:00 | |
| 0 10 * * 6,0 | Lördagar och söndagar klockan 10:00 | |
| 30 7 * * MON | Måndagar klockan 07:30 | |
| 0 0 1 * * | Midnatt den första varje månad | |
| 0 0 28-31 * * | Varje dag i månadens sista sträckaStandard cron har ingen "sista dag i månaden". Detta körs upp till fyra gånger istället; ett skript som kontrollerar datumet och avslutas tidigt är det vanliga fixet. | |
| 0 0 1 1,4,7,10 * | Midnatt första dagen varje kvartal | |
| 0 0 1 1 * | En gång per år, vid början av 1 januari |
Tillägg denna webbplats inte accepterar
6Quartz, Jenkins och vissa molnschemaläggare lägger till dessa. De listas så du känner igen dem i någon annans crontab — parsern på denna webbplats avvisar var och en, liksom cron skeppas med Linux.
| Uttryck | Intervall | Betydelse |
|---|---|---|
| ? | "Inget specifikt värde", i det dagfältet den andra redan begränsar | |
| L | Sista dagen i månaden, eller sista given veckodag | |
| 15W | Vardagen närmast 15:e | |
| FRI#3 | Tredje fredagen i månaden | |
| */30 * * * * * | Ett sjätte fält för sekunder, frammeSex fält, inte fem. Quartz och flera språkbibliotek använder denna form; crontab filen gör det inte. | |
| @reboot | Kör en gång när maskinen startarVerklig i crontab, men det är inte ett schema — det finns ingen nästa körning att beräkna, vilket är varför parsern här avvisar det. |