Linux -> Tehtävien ajastus ja levykiintiöt
[Edellinen | Seuraava]
18. Tehtävien ajastus ja levykiintiöt
Tehtävien ajastus: cron
cronin avulla käyttäjä voi suorittaa
ajastettuja tehtäviä silloinkin, kun ei ole kirjatunut
järjestelmään. Tehtävien suorittamisesta huolehtii
crond-palvelu, joka on useimmissa järjestelmissä
päällä koko ajan.
Esimerkki 1
Kuvitellaan, että haluaisit ajaa komennon finger >> /home/sinuntunnus/finger.txt
tunnin
välein (koneen käyttäjälista tiedostoon finger.txt,
niin että uusi tulostus tulee edellisen perään).
Jokainen käyttäjä voi muokata henkilökohtaista
ajatustiedostoaan (crontab-tiedosto) komentamalla
$ export EDITOR=nano $ crontab -e
- Crontab-ohjelma lukee ajatustiedoston editoinnissa
käytettävän editorin ympäristömuuttujasta
EDITOR. Ennen crontab-käskyä on siis syytä asettaa ao.
ympäristömuuttujalle sopiva arvo eli sellaisen editorin
käynistyskomento, jota osaa käyttää
(esimerkissä nano). Oletuksena crontab käyttää
vi-editoria.
Editorisi kirjoitustilassa kirjoita ajatustiedoston
ensimmäiselle riville
0-59 * * * * finger >> /home/sinuntunnus/finger.txt
- Tallenna tiedosto ja odottele seuraavia tasaminuutteja
crontab-tiedosto käyttää seuraavaa formaattia
1 2 3 4 5 komento
jossa ensimmäiset viisi kenttää
määräävät komennon suoritusajankohdan ja
viimeinen kenttä suoritettavan komennon. Ajankohta
määrärään seuraavasti:
1 |
minuutti (0-59) |
2 |
tunti (0-23) |
3 |
kuukaudenpäivä (1-31) |
4 |
kuukausi (1-12) |
5 |
viikonpäivä (0-7) Arvot 0 ja 7 tarkoittavat
sunnuntaita |
Jos kentän kohdalla on *-merkki, ko. kentällä
ei ole rajoittavaa vaikutusta. Esimerkissä 1 ao. komento
suoritetaan kellonajan minuuttien vaihtuessa miksi tahansa
tasaminuuteiksi (0-59). Jos et jaksa odotella
seuraavaan tasaminuuttiin, niin voit katsoa koneen kellonjan:
$ date
Fri Aug 10 15:34:10 EEST 2001
Jos crontab-rivisi olisi muotoa
10 * * *
* finger >> /home/sinuntunnus/finger.txt
komentosi ajettaisiin kerran
tunnissa 10min yli tasatuntien (eli esim. klo 12:10, 13:10,
14:10, jne.).
Harjoitus 1
Testaa esimerkin 1 mukainen cronin toiminta.
Pääkäyttäjä voi editoida lisäksi
systeeminlaajuista /etc/crontab-tiedostoa, esim:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg
4 ensimmäistä riviä sisältävät
avainsanan run-parts, joka tarkoittaa, että kaikki parametrina
annetussa hakemistossa olevat ohjelmat/skriptit suoritetaan:
cron.hourly: Tunnin välein,
minuutin yli tasatunnein
cron.daily: Päivittäin, 2 minuuttia yli 4 aamuyöllä
cron.weekly: Sunnuntaisin, 22 minuuttia yli 4 aamuyöllä
cron.monthly: Kk:n ensimmäinen päivä, 42 minuuttia yli 4
aamuyöllä
Viimeinen rivi on normaali komennon suoritus 5 minuutin
välein (Komento suoritetaan, kun minuutit ovat välillä
0-59 askeleena 5)
Esimerkki 2
Web-palvelimen lokeista tehdään raportteja
Analog-lokianalysaattorilla, jonka binääri on asennettu
nimellä:
/etc/httpd/analog/analog Jos nämä
raportit halutaan tehdä kerran vuorokaudessa, niin sijoitetaan
/etc/cron.daily-hakemistoon vaikkapa skripti ana, jonka
sisältö olisi kaikessa yksinkertaisuudessaan:
#!/bin/sh
/etc/httpd/analog/analog |
Harjoitus 2
Asenna luvussa 8 esitelty Web Alert-skripti cronin ajettavaksi
joka 10. minuutti, siten että ilmoitus tulee henkilkohtaiseen
postilaattoosi.
Lisähuomiot:
- crontab -l
- Listaa henkilökohtaisen crontabin
sisällön
- crontab -r
- Poistaa henkilökohtaisen crontabin
sisällön
- crontab -u ara
/root/arin_uusi_crontab.txt
- Lataa käyttäjän ara crontabin
sisällöksi tiedoston arin_uusi_crontab.txt
- Käyttäjä ei voi editoida crontabiansa
mitenkään suoraan, vaan se tapahtuu "crontab -e" -komennon
avulla!
Huomioita
- Henkilökotaista crontab-tiedostoa ei voi editoida
suoraan (jollakin tiedostonimellä), vaan se tapahtuu tavallisimmin
komennolla "cronrab -e"
- Lisätiedot:
- http://www.google.com/search?q=crontab
- man 5 crontab
- man 1 crontab
- man cron
Levykiintiöt: Quotan käyttönotto
Tämä ohje muistiinpanotyylillä.
Massamuistien käyttöä voi rajoittaa
käyttäjä- tai
käyttäjäryhmäkohtaisesti quota-nimisellä ja
siihen liittyvillä muilla ohjelmilla. Tässä ohjeessa
quota on mahdollistettu sekä käyttäjille että
käyttäjäryhmille, mutta se on otettu
käyttöön vain käyttäjille.
Dokumentit:
Seuraavassa on noudatettu enempi jälkimmäistä:
1) Editoi fstab-kuten mainittu, voi olla juuriosiokin, jos home
siellä
(tarkistukset kestää kauemmin, kun turhaakin tarkistetaan)
eli:
LABEL=/ / ext3 defaults,usrquota,grpquota 1 2
2) AJA:
quotacheck -cugm /
(Ohjeessa oli: quotacheck -acug /home EI TOIMINUT. Pitäisi
olla mounttaamaton osio, jotta onnistuu ilman m-vipua)
3) Aja
quotacheck -avug
(pitäisi laittaa crontabiin)
4) Editoi käyttäjäkohatainen quota:
edquota -u testuser
Disk quotas for user testuser (uid 501):
Filesystem
blocks
soft
hard
inodes soft hard
/dev/hda3
440436
500000
550000
37418
0 0
5) Testaa/Katso tilanne:
quota testuser
repquota -a
6) Tarkistusvälin asetus
edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem
Block
grace period Inode grace period
/dev/hda3
7days
7days
7) QUOTA PÄÄLLE!
(Ao. loitsu pitää pistää jonnekin aloitusfilettoon:
esim rc.local)
quotaon -vaug
(pois päältä: quotaoff -vaug)
LISÄHUOMIOITA
a) Pienellä grace-periodin arvolla ja riittävän
säännöllisellä "quotacheck -avug":lla cronista
quota jopa toimii riittävän "interaktiivisesti"?
b) QUOTA samaksi usealle käyttäjälle:
http://www.tldp.org/HOWTO/Quota-4.html#ss4.3
eli:
b1) Tee bob-käyttäjän quota
b2) edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`
(vaatinee c-shellin eli chs:n tai tcsh:n?)
Jätetty tarkoituksella tyhjäksi
|