Beetaversioon: sisu on enamasti terviklik ja avalikuks katsetamiseks valmis, kuid vajab veel tehnilist, keelelist ja kasutatavuse kontrolli.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki `cron` ja ajastatud tööd, mis kuulub osasse Osa IV: Tekst, otsing ja automatiseerimine.

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 vasakultVäärtused ja näite tähendus
minut0–59; */15 tähendab siin minuteid 0, 15, 30 ja 45
tund0–23; * tähendab iga tundi
kuu päev1–31; * tähendab iga päeva
kuu1–12; * tähendab iga kuud
nädalapäev0–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

  1. Mida tähendavad ajad 0 8 * * * ja */15 * * * *?
  2. Katseta logisse kirjutavat käsku käsitsi, ajastust lisamata.
  3. Kuidas eemaldada ainult oma katsetöö, jättes teised alles?
  4. 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 ajastusi
  • crontab -emuuda tabelit, säilitades muud tööd
  • /bin/date >> "$HOME"/cron-naide.log 2>&1testi ajastatavat käsku käsitsi
  • tail -n 5 "$HOME"/cron-naide.logkontrolli, kas töö lisab kirjeid

Märgid ja valikud

  • */15 * * * *minutitel 0, 15, 30 ja 45
  • 0 8 * * 1-5tööpäeviti kell 08.00 süsteemi ajavööndis
  • crontab failasendab kogu kasutaja ajastustabeli
  • crontab -reemaldab kogu kasutaja ajastustabeli