Se afișează postările cu eticheta monitorizare. Afișați toate postările
Se afișează postările cu eticheta monitorizare. Afișați toate postările

25 septembrie 2007

monitorizare partitii in linux

In general masinile unix pot creea probleme foarte mari in momentul in care spatiul pe discurile (sau partitiile) alocate pentru utilizare este alocat cu date in proportie de 100%. In acest moment problemele aparute pot crea crea probleme cu o mare natura a diversitatii lor dar cea mai importanta problema este pierderea datelor, care de cele mai multe ori este ireversibila. Posibilitatea de recuperare a datelor in acest caz este de domeniul "uita de ele ca nu se mai poate face nimic".
Pentru a nu ajunge in aceasta "ipostaza" este nevoie de o "forma" de monitorizare a sapatiului fizic care poate sa fie utilizat pe discurile din sistem sau partitiile acestuia.
Comanda "df -k" ne ajuta in acest sens sa aflam spatiu fizic liber care se gaseste pe partitiile pe care sistemul de operare le foloseste. Nu voi insista aici pentru partitiile montate/nemontate care sunt folosite in scopuri mult mai dedicate. Un output al comenzii df -k poate arata de forma:

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 30833736 5195932 24071468 18%
/udev 128160 116 128044 1% /dev
/dev/sda1 798476 25236 732680 4% /boot
/dev/sdb1 15820524 389608 14627268 3% /squid_1/
/dev/sdb2 19457392 2354440 16114556 13% /squid_2

Problema ca cineva sa realizeze aceasta operatie la o anumita perioada de timp cred ca este de domeniul trecutului. Am facut o scurta "radiografie" a serviciilor pe care ni le ofera crontab si cred ca este timpul ca o mare parte a operatiilor care necesita sa zicem "mentenanta" sa fie folosite cu aceste unelte.
Mai jos prezint un mic "programel", cred ca-i putem zice si "script" care ne va spune modul de utilizare a discurilor/partitiilor.

#!/bin/sh
# script de monitorizare a spatiului de pe disk
# dupa rrealizarea operatie se va trimite un mail la contul de administrator
# implicit valoarea de monitorizare este de 90% a spatiului ocupat
# la fel va trebui sa scriem explicit adresa de mail a administratorului (am folosit adresa mea de mail)
ADMIN=hadrian.popescu@gmail.com
# alegem valorea "pragului de alerta" implicit este de 90%
ALERT=90
df -H grep -vE '^Filesystemtmpfscdrom' awk '{ print $5 " " $1 }' while read output;
do
#echo $output
usep=$(echo $output awk '{ print $1}' cut -d'%' -f1 )
partition=$(echo $output awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)"
mail -s "PROBLEME : depasire spatiu pe disk $usep" $ADMIN
fi
done

Nu cred ca va avea rost sa insist la modul de functionare interna. Este foarte simplu in momentul in care spatiul pe disk/partitii depaseste 90% din procentul maxim de 100% a spatiului disponibil se va trimite un mail de avertizare la contul de mail specificat.

Cam asta ar fi totul despre acest mic subiect. Cum facem sa fie "automatizat" cu ajutorul lui cron cat de curand..........

24 septembrie 2007

crontab (1)

In general (dupa cum stie lumea) este pentru executarea periodica a unor sarcini sau chiar rerpetitiva.

Comanda pentru editarea este: # crontab -e

Sintaxa comenzii este de forma:

1 2 3 4 5 /calea/catre/comanda arg1 arg2

—1 valoare minute (0-59)
—2 valoare ora (0-23)
—3 valoare zi (0-31)
—4 valoare luna (1-12, 12=decembrie)
—5 valoarea zilei din saptamana (0-7, 7 sau 0 = duminica)
/calea/catre/comanda calea catre numele comenzii care urmeaza sa fie executata

Forma explicita (care o veti gasi in orice sistem de operare linux) este de forma:


* * * * * /calea/catre/comanda
-------valoarea zilei din saptamana (0-7, 7 sau 0 = duminica)
-----valoare luna (1-12, 12=decembrie)
---valoare zi (0-31)
--valoare ora (0-23)
-valoare minute (0-59)

Exemplu:
5 0 * * * ruleaza comanda la 5 minute dupa ora 24:00
15 14 1 * * ruleaza comanda la ora 14:15 in prima zi a lunii curente
0 22 * * 1-5 ruleaza comanda la ora 22 pentru zilele din saptamana de luni pana vineri
23 0-23/2 * * * ruleaza comanda la minutul 23 din 2 in 2 ore (ora 00:00, 02:00,04:00…)

Utilizarea operatorilor


—“*” reprezinta orice valoare posibila pentru pozitia curenta
—“,” reprezinta o lista a valorilor 1,5,10,15,20
—“-” reprezinta un interval al valorii (10-15 zilele 10 pana la 15, care este echivalentul 10,11,12,13,14,15)

Implicit rezultatul comenzii rulate este trimis contului de admninistrator local. Pentru dezactivarea aceteia implicit se foloseste: "appent > /dev/null 2>&1"

Pentru utilizarea comenzii folosim:

—crontab –l listare a fisierului de comenzi
—crontab –e pentru operatii de scriere/citire asupra fisierului de comenzi

O problema "majora" ar fi modul de editare al fisierului in sine care implicit se realizeaza cu utilitarul vi. Fiint pentru unii utilizatori mai usor sau mai greoi (asta nu avem de unde sa stiim) cred ca cel mai bine ar fi utilizarea editorului "joe" cu urmatoarea comanda:
$export EDITOR=joe urmat de $joe /etc/crontab

Si acum cateva exemple mai "intuitive" daca le pot numi asa:

—Utilizare script pentru prima sambata din luna curenta:
00 01 1-7 1-12 * if [ "$(date +%a) = "Sat" ]; then /path/to/script.sh; fi

—Rulare la ora 14:00 in data de 29 decembrie in ziua 4 a saptamanii (marti):
— 0 14 29 12 4 /path/to/command