cron ja ajastatud tööd
Ajastatud töö käivitub kindlal ajal ilma sinu kohalolekuta. cron sobib näiteks perioodilise mõõtmise või varundusskripti käivitamiseks. Töö ei ava terminaliakent: salvesta väljund logisse.
Loe ajamustrit
Kasutaja cronitabeli reas on viis ajavälja ja seejärel käsk:
*/15 * * * * /bin/date >> "$HOME"/cron-naide.log 2>&1
| Väli vasakult | Väärtused ja näite tähendus |
|---|---|
| minut | 0–59; */15 tähendab siin minuteid 0, 15, 30 ja 45 |
| tund | 0–23; * tähendab iga tundi |
| kuu päev | 1–31; * tähendab iga päeva |
| kuu | 1–12; * tähendab iga kuud |
| nädalapäev | 0–7, kus 0 ja 7 on pühapäev; * tähendab iga nädalapäeva |
Seega ei tähenda näide „15 minutit pärast lisamist“, vaid järgmisi kellaaegu, mille minut jagub 15-ga. >> lisab väljundi logi lõppu ja 2>&1 ühendab sinna veaväljundi.
Kontrolli käsku enne ajastamist
/bin/date >> "$HOME"/cron-naide.log 2>&1
tail -n 5 "$HOME"/cron-naide.log
Logisse peab lisanduma praegune kuupäev ja kellaaeg. Croni PATH ja keskkond võivad erineda sinu terminali omadest; eelista programmi ning sisendfailide täisteid. Oma virtuaalkeskkonna Pythonit saab kutsuda otse selle täisteega, ilma interaktiivse aktiveerimiseta.
Lisa üks töö seniseid säilitades
crontab -l näitab olemasolevaid töid, crontab -e avab need redaktoris. Kui töid pole, võib loendi asemel tulla vastav teade.
crontab -l
crontab -e
Lisa ülaltoodud näidisrida seniste ridade lõppu, salvesta ning kontrolli uuesti crontab -l abil. Kui tahad ainult mustrit õppida, ära rida päriselt paigalda.
> crontab fail asendab kogu senise kasutaja cronitabeli, mitte ei lisa failist üht rida. Samuti eemaldab crontab -r kogu tabeli. Katse lõpetamiseks ava crontab -e ja eemalda ainult enda lisatud näidisrida.
Kui logisse ei teki uut rida
Kontrolli, kas määratud kellaaeg saabus, masin oli sisse lülitatud, croniteenus töötas ja kasutajal oli logifailile kirjutamisõigus. Tavapärane cron ei käivita magamise või väljalülitamise ajal vahele jäänud tööd automaatselt tagantjärele.
Linuxis kasutatakse ka systemd ajasteid, macOS-is launchd-d. Süsteemi ajavöönd ja suveajale üleminek mõjutavad kellaaegadel põhinevaid ajastusi. Lisaks käsitleb cron käsureas märki % eriliselt; näiteks date +%F vajab cronireas kuju date +\%F.
Minitest
- Mida tähendavad ajad
0 8 * * *ja*/15 * * * *? - Katseta logisse kirjutavat käsku käsitsi, ajastust lisamata.
- Kuidas eemaldada ainult oma katsetöö, jättes teised alles?
- Miks terminalis töötav käsk ei pruugi cronis sama tulemuse anda?
Peatüki täisspikker
Töövood
Eesmärk
Ajasta läbiproovitud käsk; kasuta täisteid ja talleta väljund logisse.
Käsud ja näited
crontab -lvaata praeguse kasutaja ajastusicrontab -emuuda tabelit, säilitades muud tööd/bin/date >> "$HOME"/cron-naide.log 2>&1testi ajastatavat käsku käsitsitail -n 5 "$HOME"/cron-naide.logkontrolli, kas töö lisab kirjeid
Märgid ja valikud
*/15 * * * *minutitel 0, 15, 30 ja 450 8 * * 1-5tööpäeviti kell 08.00 süsteemi ajavööndiscrontab failasendab kogu kasutaja ajastustabelicrontab -reemaldab kogu kasutaja ajastustabeli