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

Niciun comentariu: