LOGROTATE Labor

Keskkond: Virtual Box, installitud ubuntu/debian server/desktop

Ülesanne:

Näited on toodud kasutaja it näol kelle kodukatalog asub katalogis /home/it

Labor koosneb mitmest osast.

  1. Luua uus kasutaja või kasutada olemas olev.
  2. crontab-iga genereerime iga minut infot ja suuname ta määratud log faili käivitades script faili
  3. Loome logrotate reeglite faili, mille alusel logrotate deemon roteerib logisid
  4. Paigutada crontab-i ülesanne mis kutsub välja roteerimis scripti

Lahendus:

1. minu.sh iga minut käima

Logida loodud kasutaja õigustes terminali ja selle kasutaja õigustes luua kodukatalogis katalog /var kuhu hakame kirjutama logi,
Luua kodukatalogis script nimega minu.sh mis peaks kirjutama iga minut log faili var/minu.log järgmiseid kirjeid:
1.kellaaeg ja kuupäev
2.käsu ps axl väljund
3.-------------------------
# eraldaja rida

Kasutatavad käsud : touch, cat, date, echo. Enne käsu sissekirjutamist kontrolli see käsk käsureas. Faili alguses peab olema rida mis määrab shelli mille all see script käivitatakse. Naiteks "#!/bin/sh". Failile tuleb anda käivitus õigus.
Käskude näited:
touch somefile; ps >>somefile; date +%c >>somefile; echo "-?0=--_" >> somefile

Näiteks kasutaja it puhul:

$ cd $HOME
Loome katalogi
$ mkdir var
Loome faili
$ touch minu.sh
$ chmod 755 minu.sh

Kopeeri altoodud tekst faili

#!/bin/bash
date >> /home/it/var/minu.log
ps axl >> /home/it/var/minu.log
echo "--------------------------------" >> /home/it/var/minu.log

Kontrolliks käivitame skripti ja vaatame kas logi fail tekkis ja logi faili tekis info

$ cd $HOME
$ ./minu.sh
$ ls -l var
$ cat var/minu.log

Oles kasutaja õigustes installime cron deemonisse uue ülesannde mis käivitab iga minut loodud minu.sh scripti.

$ crontab -e

* * * * * /bin/bash /home/it/minu.sh

NB! Faili lõppus peab olema reavahetus(Enter).
Vaata crontabi kasutamisnäidet siit.

Tuleks kontrollida minuti pärast et kas sinna tekisid kirjed.

$ cd $HOME
$ ls -l
$ cat /home/it/var/minu.log

2. Loome logrotate konfiguratsiooni faili $HOME/var katalogis logide roteerimiseks

Kasutaja "root" õigustes luua /etc/logrotate.d katalogis fail kasutaja nimega
faili paigutada reeglid mis roteerivad eelnimetatud faili juhul kui

Näiteks it kasutaja puhul:

# apt-get install mailutils
$ cd /etc/logrotate.d
$ touch it
$ nano it

/home/it/var/*.log {
/usr/bin/mail nimi.perenimi@tptlive.ee
size 50k
missingok
rotate 4
compress
}

kus elemendid tähendavad järgmist:
mail it@pa09.tpt # roteerimise puhul teavitus aadress
size 10k # roteerida kui suusrus ületab 10 kilo
missingok # puuduv fail ei tekita probleeme
rotate 5 # viis rotatsiooni
compress # peale rotatsiooni zipida kokku

3. Luua cron job logrotate käivitamiseks iga 5 minutit

"root" kasutaja õigustes installida cron deemonisse uus ülesanne mis käivitab iga 5 minuti tagant shell scripti:
/etc/cron.daily/logrotate

$ crontab -e

*/5 * * * *   /usr/sbin/logrotate /etc/logrotate.d/it

Kontrollida $HOME/var katalogis roteerimis tulemust
% cd $HOME/var; ls -l
-rw-r--r-- 1 kasutaja kasutaja 16599 2010-10-20 18:56 minu.log
-rw-r--r-- 1 kasutaja kasutaja 66489 2010-10-20 18:55 minu.log.1
-rw-r--r-- 1 kasutaja kasutaja 4886 2010-10-20 18:51 minu.log.2.gz
-rw-r--r-- 1 kasutaja kasutaja 5780 2010-10-20 18:48 minu.log.3.gz
-rw-r--r-- 1 kasutaja kasutaja 8984 2010-10-20 18:40 minu.log.4.gz

Labori lõpus peale õpetajale näitamist palun kustutage tekitatud ülesanded crontab-ist ja tekitatud log failid loodud kasutaja kodukatalogis..