cron ja ajastatud tööd
Selles peatükis vaatame, kuidas panna lihtne käsk regulaarselt käima.
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
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.