Paieška


print PDF
Automatinės užduotys

Linux sistemose užduotys gali būti automatiškai paleidžiamos tam tikru metu. Pvz., Red Hat Linux sistemos sukonfigūruotos taip, kad kas tam tikrą laiką paleistų užduotis, kurios atnaujina sistemą. Arba duomenų bazės, kurios turi būti atnaujinamos kasdien: administratorius gali nustatyti periodinį atnaujinimą, taip pat periodiškai daryti atsargines kopijas, surinkti sistemos stebėjimo grafikus, paleisti tam tikrus scenarijus ir t.t.

Cron užduočių konfigūravimas

Pagrindiniame Cron konfigūraciniame faile /etc/crontab rasite šias eilutes:

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


Pirmos keturios eilutės yra kintamieji, skirti konfigūruoti aplinkai, kurioje vykdomos cron užduotys. SHELL reikšmė nurodo, kokią vartotojo aplinką naudoti (pavyzdyje tai bash), PATH nurodo komandų vykdymo kelią. Cron užduočių išvestis siunčiama el. paštu vartotojui, nurodytam MAILTO kintamajame. Jeigu kintamasis MAILTO tuščias (MAILTO=""), el. laiškas nebus siunčiamas. Kintamasis HOME naudojamas home katalogo nustatymui scenarijų vykdymo metu.

Kiekviena /etc/crontab failo eilutė užrašoma tokiu formatu:

minutė valanda diena mėnuo savaitės_diena komanda

  • minutė — bet koks sveikasis skaičius nuo 0 iki 59
  • valanda - bet koks sveikasis skaičius nuo 0 iki 23
  • diena - bet koks sveikasis skaičius nuo 1 iki 31 (jeigu nurodytas mėnuo, jis turi turėti nurodytą dieną)
  • mėnuo - bet koks sveikasis skaičius nuo 1 iki 12 (arba trumpas mėnesio pavadinimas, pvz., jan, febir t.t.)
  • savaitės_diena - bet koks sveikasis skaičius nuo 0 iki 7, kur 0 ir 7 yra sekmadienis (taip pat galima nurodyti trumpą savaitės dienos pavadinimą, pvz., sun, mon ir t.t.)
  • komanda — komanda, kurią įvykdyti. Tai gali būti terminalo (komandinės eilutės) komanda, pvz., ls /proc >> /tmp/proc arba jūsų scenarijų paleidžianti komanda (kelias iki scenarijaus).

Kiekviena aukščiau nurodyta reikšmė gali būti pakeista žvaigždute (*), taip bus nurodytos visos galimos reikšmės. Pavyzdžiui, žvaigždutė mėnesio lauke reiškia, kad užduotis bus vykdoma kiekvieną mėnesį, priklausomai nuo kitų kintamųjų.

Brūkšnelis (-) tarp skaičių reiškia sveikųjų skaičių intervalą. Pavyzdžiui, reikšmė 1-4 reiškia sveikuosius skaičius 1, 2, 3 ir 4.

Kableliu (,) atskirti sveikieji skaičiai nurodo sąrašą. Pavyzdžiui, dienos lauko įrašas 3, 4, 6, 8 reiškia šias mėnesio dienas.

Pasvirasis brūkšnelis (/) naudojamas žingsnio reikšmei nustatyti. Sveikojo skaičiaus reikšmė praleidžiama už pasvirojo brūkšnelio nurodytu žingsniu. Pavyzdžiui, 0-59/2 minutės lauke reiškia, kad užduotis bus vykdoma kas antrą minutę. Žingsnines reikšmes galima naudoti ir su žvaigždute. Tokiu atveju mėnesio kintamojo reikšmė */3 reikš, kad užduotis bus vykdoma kas trečią mėnesį.

Grotelėmis (#) prasidedančios eilutės yra komentarai ir nėra vykdomos.

Kaip skirtajame serveryje automatiškai paleisti scenarijus (su crond)?

Pirmiausiai turite patikrinti, ar scenarijus veikia komandinės eilutės aplinkoje. Scenarijus turėtų veikti, jeigu jo pradžioje įrašysite #!/usr/local/bin/php (jeigu tai PHP scenarijus) arba #!/usr/bin/perl (jeigu tai PERL), taip pat #!/bin/bash (jeigu tai vartotojo aplinkos scenarijus). Po to naudokite chmod 700 komandą ir ja paveikite savo scenarijų: chmod 700 scenarijus.cgi. Jeigu esate prisijungęs per telnet/ssh, galite patikrinti komandos paleidimą naudodami ./script.cgi.

Viskas, ką turite padaryti po to, tai į failą įtraukti kelią iki scenarijaus ir nurodyti paleidimo laiką.

Pavyzdys:

Automatizuoto scenarijaus, naudojančio MRTG kreives, diegimas:

*/5 **** root /usr/local/mrtg-2/bin/mrtg /home/ovh/www/mrtg/mrtg-sys/mrtg-sys/mrtg_nsxxxx.ovh.net.cfg >/dev/null 2>/dev/null


/home/ovh/www/mrtg/mrtg-sys/mrtg-sys/mrtg_nsxxxx.ovh.net.cfg yra kelias iki scenarijaus, kurį paleisti.
*/5 **** Yra paleidimo laikas.
Šis scenarijus paleidžiamas kas 5 minutes.