Cron-lausekkeen rakentaja
Rakenna cron-lauseke kenttä kerrallaan, lue se selkokielellä, katso seuraavat ajot aikavyöhykkeittäin ja muunna se systemd-, Quartz- tai AWS-muotoon.
Selkokielellä
Sekä kuukauden päivä että viikonpäivä on asetettu: perinteinen cron ajaa, kun JOMPIKUMPI täsmää (ei molemmat).
Rakentaja
| Kenttä | Tila | Arvo |
|---|---|---|
| Sekunti0–59 | ||
| Minuutti0–59 | ||
| Tunti0–23 | ||
| Kuukauden päivä1–31, L | ||
| Kuukausi1–12 tai JAN–DEC | ||
| Viikonpäivä0–7 (0 ja 7 = sunnuntai) tai SUN–SAT |
Seuraavat ajot
Muut muodot
- crontab-rivi
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Näin rakennat cron-lausekkeen
- Kirjoita tai liitä lauseke kenttään Cron-lauseke tai valitse se kohdasta Esiasetukset. Myös makrot, kuten
@dailytai@weekly, kelpaavat. - Tai käytä Rakentajaa: valitse jokaiselle kentälle Tila (Jokainen, Joka N:s, Tietyt arvot, Väli tai Oma) ja täytä Arvo. Lauseke päivittyy sitä mukaa, ja lausekkeen muokkaaminen päivittää rakentajan.
- Rastita Lisää sekuntikenttä (6 kenttää), jos ajastimesi tukee sekunteja.
- Lue aikataulu Selkokielellä (sivun kielellä, kun kuvauskirjasto sen tukee, muuten englanniksi) ja tarkista sitten Seuraavat ajot -luettelo. Valitse työn ajavan palvelimen Aikavyöhyke ja se, Kuinka monta ajoa luetellaan.
- Kopioi lauseke Kopioi-painikkeella tai käytä jotakin Muista muodoista.
Virheet selitetään kenttäkohtaisesti, esimerkiksi ”Minuutti: 61 on sallitun alueen ulkopuolella (0–59)”, joten tiedät tarkalleen, mitä korjata.
Viisi cron-kenttää
Tavallisessa (Vixie) cron-rivissä on viisi kenttää ja sen perässä komento:
| Kenttä | Sallitut arvot |
|---|---|
| Minuutti | 0–59 |
| Tunti | 0–23 |
| Kuukauden päivä | 1–31 |
| Kuukausi | 1–12 tai JAN–DEC |
| Viikonpäivä | 0–7 (0 ja 7 ovat sunnuntai) tai SUN–SAT |
Jokainen kenttä hyväksyy * (jokainen arvo), listan 1,15, välin 9-17, askeleen */15 (joka 15. yksikkö) tai välin askeleella 0-30/10. Näin ollen */15 9-17 * * 1-5 tarkoittaa joka 15. minuutti klo 9:00–17:45 maanantaista perjantaihin.
Yksi sääntö yllättää monet: kun sekä Kuukauden päivä että Viikonpäivä on rajattu, perinteinen cron ajaa, kun jompikumpi täsmää. 0 0 13 * 5 ajetaan jokaisena 13. päivänä ja jokaisena perjantaina, ei vain perjantai 13. päivänä. Työkalu näyttää tässä tapauksessa varoituksen.
Seuraavat ajoajat ja aikavyöhykkeet
Cron käyttää koneen kelloa tai crontabin CRON_TZ/TZ-asetusta. Seuraavat ajot -luettelo lasketaan valitsemallesi aikavyöhykkeelle kesäaikaan siirtymät mukaan lukien: keväällä klo 2:30 ajettavaksi asetettu työ voi jäädä väliin, ja syksyllä se voi toteutuksesta riippuen ajaa kerran tai kahdesti. Jos työn on ajettava täsmälleen kerran, suosi aikoja klo 1:00–3:00 ulkopuolelta tai käytä UTC:tä.
Vixie cron, systemd-ajastimet, Quartz ja AWS
- systemd-ajastimet käyttävät
OnCalendar=-asetusta eri syntaksilla:Mon..Fri *-*-* 09..17:00/15:00. Viikonpäivä- ja päivämääräehdot yhdistetään AND-operaattorilla, ei OR:lla, joten joillakin cron-lausekkeilla ei ole täsmälleen vastaavaa. - Quartz ja Spring asettavat sekuntikentän ensimmäiseksi ja voivat lisätä vuosikentän. Toisen kahdesta päiväkentästä on oltava
?, ja Quartz numeroi viikonpäivät 1–7 sunnuntaista alkaen toisin kuin cronin 0–6. Työkalu kirjoittaa viikonpäivät nimillä (MON-FRI) tämän ansan välttämiseksi. - AWS EventBridge käyttää muotoa
cron(minuutit tunnit päivä kuukausi viikonpäivä vuosi): kuusi kenttää, ei sekunteja,?toisessa päiväkentässä ja vuosi lopussa.
Tavallisessa cronissa ei ole sekuntikenttää. Sekunteja sisältävää 6-kenttäistä muotoa tukevat monet kirjastot (node-cron, Spring, Quartz), mutta järjestelmän crontab ei.
Usein kysytyt kysymykset
Miten ajan työn joka 5. minuutti?
Käytä */5 * * * *. Työ ajetaan minuuteilla 0, 5, 10… joka tunti.
Miten ajan työn kuukauden viimeisenä päivänä?
Monet ajastimet hyväksyvät L-merkin kuukauden päivän kentässä: 0 18 L * *. Tavallisessa Vixie cronissa aja työ päivittäin päivinä 28–31 ja testaa skriptissä, onko huominen 1. päivä.
Mitä @reboot tekee?
Se ajaa komennon kerran, kun cron-daemon käynnistyy. Sillä ei ole aikataulua, joten työkalu ei voi luetella sen ajoaikoja.
Miksi työni ei aja näytettynä aikana?
Tarkista palvelimen aikavyöhyke, käyttäjän crontab verrattuna tiedostoon /etc/crontab (jossa on ylimääräinen käyttäjäkenttä) ja PATH: cron käynnistyy minimaalisessa ympäristössä.
Onko 0 vai 7 sunnuntai?
Molemmat. Viikonpäivän kentässä 0 ja 7 tarkoittavat sunnuntaita, 1 on maanantai ja 6 lauantai.
Aiheeseen liittyvät työkalut
- Unix-aikaleimamuunnin Muunna Unix-aikaleimat sekunneista tai millisekunneista luettaviksi päivämääriksi paikallisessa ajassa, UTC:ssä ja ISO 8601 -muodossa. Muunna myös takaisin.
- Aikavyöhykemuunnin Muunna kellonaika aikavyöhykkeestä toiseen. Työkalu huomioi kesäajan, UTC-eron ja päivän vaihtumisen kaupungeille ja IANA-vyöhykkeille.
- Chmod-laskin Muunna Unix-tiedostooikeudet ruutujen, oktaalin (755) ja symbolisen (rwxr-xr-x) muodon välillä. Mukana setuid, setgid, sticky ja valmiit chmod-komennot.