Incron

botond küldte be 2018. 10. 03., sze – 19:53 időpontban

Az Incron egy esemény figyelő rendszer, amely egy daemonból (incrond) és egy kezelőprogramból áll. Használata hasonló, mint a hagyományos cron rendszeré, annyi különbséggel, hogy az Incron nem az időzítési ciklusokban, hanem a fájlrendszerben bekövetkezett események (írás, olvasás, hozzáférés, stb) hatására indítja el a megadott programokat, szkripteket. Valamint annyiban tér még el a cron-tól, hogy az Incron esetében a szabályok nem közvetlenül egy crontab fájl szerkesztésével állíthatók be, hanem az erre a célra készített incrontab kezelőprogram segítségével. Miután elhelyezésre került az Incron táblájában a megfelelő eseményfigyelő sor a háttérben működő incrond daemon figyeli a megadott fájlt vagy könyvtárat, majd a bekövetkezett változáskor lefuttatja a beállított parancsot.

 

Telepítés

Telepítése roppant egyszerű. Debian alapú disztribúciókon az alábbi paranccsal telepíthető root-ként:

apt-get install incron

És a sikeres kimenet:

Csomaglisták olvasása... Kész
Függőségi fa építése
Állapotinformációk olvasása... Kész
Az alábbi ÚJ csomagok lesznek telepítve:
  incron
0 frissített, 1 újonnan telepített, 0 eltávolítandó és 101 nem frissített.
Letöltendő adatmennyiség: 68,8 kB.
A művelet után 321 kB lemezterület kerül felhasználásra.
Letöltés:1 http://ftp.hu.debian.org/debian/ jessie/main incron amd64 0.5.10-2 [68,8 kB]
Letöltve 68,8 kB 0mp alatt (874 kB/s)
A korábban ki nem választott incron csomag kiválasztása.
(Adatbázis olvasása ... 66120 fájl és könyvtár van jelenleg telepítve.)
Kibontás előkészítése: .../incron_0.5.10-2_amd64.deb ...
Kibontás: incron (0.5.10-2) ...
Aktiválók feldolgozása: systemd (215-17+deb8u7) ...
Aktiválók feldolgozása: man-db (2.7.0.2-5) ...
Beállítás: incron (0.5.10-2) ...
Adding group `incron' (GID 126) ...
Kész.
Aktiválók feldolgozása: systemd (215-17+deb8u7) ...

 

Használatba vétel

Telepítés után még nem lehet egyből az incrontab programot használni, mert nincs engedélyezve még a root-nak sem. Feladatok kilistázása:

incrontab -l

Elsőre ezt a hibát dobja:

user 'root' is not allowed to use incron

Először tehát fel kell venni a felhasználókat az engedélyezettek listájára:

nano /etc/incron.allow

És adjuk hozzá a root felhasználót, vagy akinek engedélyezzük a használatát:

root

Ezután ha újra futtatjuk a listázós parancsot, akkor már más kimenetet kapunk:

incrontab -l
no table for root

Tehát még nincs Incron feladata a root-nak.

 

Incron feladat létrehozása

Új Incron feladatokat az alábbi paranccsal hozhatunk létre:

incrontab -e

Ekkor megnyílik az alapértelmezett szerkesztő, ahol egy átmeneti fájlban szerkeszthetőek a feladatok.

A feladatsorok formátuma a következő:

<útvonal> <maszk> <parancs>
  • Útvonal: Az útvonal lehet egy konkrét fájl vagy egy könyvtár. Itt megjegyzendő, hogy az Incron nem működik rekurzívan, tehát a beállított könyvtárban csak a közvetlenül alatta lévő fájlokat és könyvtárakat figyeli. Az alkönyvtárakban lévő további fájlokat már nem figyeli. Azokhoz további Incron feladatok létrehozása szükséges.
  • Maszk: A maszk egy azonosító, amivel azonosítani tudjuk a bekövetkezett eseményeket.
  • Parancs: Itt pedig meg kell adni az esemény bekövetkeztekor lefuttatni kívánt parancsot.

 

Maszkok

Az Incron a következő maszkokat használja, azaz ezeket az eseményeket ismeri fel a fájlrendszer változásai során:

  • IN_ACCESS: A megfigyelt fájlt megnyitották
  • IN_ATTRIB: Metaadatok változása történt (jogosultságok, időbélyegek, egyéb attribútumok változása, stb)
  • IN_CLOSE_WRITE: Egy írásra megnyitott fájlt bezártak
  • IN_CLOSE_NOWRITE: Egy nem írásra megnyitott fájlt bezártak
  • IN_CREATE: Egy fájlt vagy alkönyvtárat létrehoztak egy figyelt könyvtárban
  • IN_DELETE: Egy fájlt vagy alkönyvtárat töröltek egy figyelt könyvtárban
  • IN_DELETE_SELF: Egy figyelt fájlt vagy könyvtárat töröltek
  • IN_MODIFY: Egy fájlt módosítottak egy figyelt könyvtárban
  • IN_MOVE_SELF: Egy figyelt fájlt vagy könyvtárat áthelyeztek
  • IN_MOVED_FROM: Egy fájlt kihelyeztek a megfigyelt könyvtárból
  • IN_MOVED_TO: Egy új fájlt helyeztek a figyelt könyvtárba
  • IN_OPEN: Egy fájlt megnyitottak a figyelt könyvtárban

 

Fontos, hogy a feladatok létrehozása során ne jöhessenek létre végtelen hurkok, mert azok nagy rendszerterhelést okozhatnak, vagy akár rendszerösszeomlást is eredményezhetnek!
Példa: Ha például egy Incron feladat figyeli a /tmp könyvtárat, aminek a változásakor a lefuttatott program módosítást végez ugyanebben a könyvtárban (írás, olvasás, törlés, létrehozás, stb), akkor a feladat egy végtelen ciklusba kerül, mivel a módosítás újabb programhívásra készteti az Incron-t. Ez pedig nagy terhelést okoz a rendszernek.