cron ja ajastatud tööd
Loogika
Ajastatud töö tähendab, et käsk jookseb kindlal ajal ilma selleta, et peaksid ise terminalis kohal olema.
See on kasulik näiteks siis, kui tahad:
- teha regulaarset varukoopiat
- kirjutada logisse mõõtmist
- käivitada puhastus- või sünkroonkäigu
Alguses piisab täiesti sellest, kui mõistad kolme asja:
- kus ajastus kirjas on
- et kasutada tuleb sageli täisradasid
- et väljund tasub logifaili suunata
Kiirülevaade
Eesmärk on panna lihtne töö kindlal ajal käima ja jätta maha logi, millest saab hiljem aru, mis juhtus.
| Käsk või mõiste | Milleks | Mida tavaliselt näed |
|---|---|---|
crontab -l | näita olemasolevaid ajastusi | ridade loend või teade, et ajastusi pole |
crontab -e | muuda ajastusi | avaneb redaktor |
| croni ajamuster | käivita käsk kindlal ajal | terminalis ei ilmu tavaliselt midagi |
| suunamine logifaili | salvesta tulemus ja vead | logifailist näed hiljem väljundit |
Cron jookseb teistsuguses keskkonnas kui sinu interaktiivne shell, seega kasuta vajadusel täisteid ja logimist.
Tüüpilised algaja vead
- kasutatakse suhtelisi teid, mis cronis ei tööta ootuspäraselt
- unustatakse, et cronil võib olla teistsugune
PATH - eeldatakse, et vea korral ilmub midagi automaatselt ekraanile
Kiirspikker
crontab -lnäitab sinu croni riducrontab -eavab cron-tabeli muutmiseks- viis ajavälja tähendavad minut, tund, kuupäev, kuu ja nädalapäev
*/15 * * * * käsktähendab “iga 15 minuti järel”
Käivita need käsud
Kõige ohutum esimene samm on lihtsalt vaadata olemasolevat croni:
crontab -l
Näidisrea võid kõigepealt kirjutada faili:
cat > naide.cron <<'EOF'
*/15 * * * * /bin/date >> "$HOME"/cron-naide.log 2>&1
EOF
cat naide.cron
Kui tahad selle päriselt paigaldada, siis järgmine samm oleks:
crontab naide.cron
crontab -l
Cronirea kuju
Lihtne cronirida näeb välja nii:
*/15 * * * * /bin/date >> "$HOME"/cron-naide.log 2>&1
Väljad vasakult paremale:
- minut
- tund
- kuupäev
- kuu
- nädalapäev
- käsk
Näite tähendus on:
- iga 15 minuti järel
- käivita
/bin/date - lisa väljund faili
cron-naide.log
Miks täisrajad tähtsad on
Croni keskkond on tavaliselt palju väiksem kui sinu tavaline interaktiivne shell.
See tähendab, et käsk, mis töötab terminalis nii:
date
tasub cronis kirjutada pigem nii:
/bin/date
Sama kehtib sageli ka skriptide, Pythoni ja teiste tööriistade kohta.
Väljundi suunamine
Kui cron töötab taustal, siis on väga kasulik suunata väljund faili:
>> "$HOME"/cron-naide.log 2>&1
See tähendab:
- lisa tavaline väljund faili lõppu
- lisa samasse faili ka veaväljund
Kui töö ei käi ootuspäraselt, on see logifail esimene koht, kust vaadata.
Testi käsku enne käsitsi
Väga hea reegel on:
enne kui paned käsu croni, käivita ta käsitsi täpselt samas kujus.
Näiteks:
/bin/date >> "$HOME"/cron-naide.log 2>&1
tail -n 5 "$HOME"/cron-naide.log
Kui see ei tööta käsitsi, ei tööta see tõenäoliselt ka cronis.
Linux ja macOS
Croni põhimõte on sarnane, aga tänapäeva süsteemides on olemas ka teised ajastusmehhanismid:
- Linuxis kohtad sageli ka systemd timereid
- macOS-is on loomulikum süsteem
launchd
Sellegipoolest on cron väga hea esimene mudel, mille pealt ajastatud töid mõista.
Minitest
- Vaata, kas sinu kasutajal on juba mõni cronirida olemas.
- Kirjuta üks näidisrea fail, mis käivitaks käsu iga 15 minuti järel.
- Käivita sama käsk enne käsitsi.
- Seleta ühe lausega, miks täisrada on cronis tähtis.
Peatüki täisspikker
Töövood
Eesmärk
ajastatud töö tähendab, et käsk jookseb kindlal ajal ilma sinu avatud terminalita; tähtsad on ajaväljad, täisrajad ja logifail
Põhikujud
crontab -lvaata olemasolevatcrontab naide.cronpaigalda fail/bin/date >> "$HOME"/cron-naide.log 2>&1testi käsitsitail -n 5 "$HOME"/cron-naide.logvaata logi
Olulisemad lipud, märgid ja kiirnupud
*/15 * * * *iga 15 min>>lisa logisse2>&1vead samasse$HOMEkasutaja kodu/bin/datetäisrada