Az Inotify a Linux kernel egy alrendszere , amely lehetővé teszi, hogy értesítéseket kapjon a fájlrendszer fájljaival és könyvtáraival kapcsolatos eseményekről. Például fájlok és könyvtárak megnyitása olvasásra vagy írásra, attribútumok megváltoztatása , áthelyezés, törlés stb. A 2.6.13 óta benne van a fő kernelben, de a korábbi kernelekkel is használható patch overlay segítségével. A 2.6.32 óta az Inotify-t az Fsnotify váltotta fel, az Inotify pedig az Fsnotify-on alapul, de a gyakorlati alkalmazások szempontjából ez a részlet lényegtelen maradt [1] .
Ha feliratkozik az Inotify eseményekre, a szkripteknek nem kell időszakonként átvizsgálniuk a fájlrendszert módosításokért. Ezenkívül az esemény-előfizetés nem akadályozza meg a kötet leválasztását [1] .
A fő hatókör a helyi keresőmotorokban van (például , Beagle ), így az indexelő programnak nem kell rendszeresen átvizsgálnia a teljes fájlrendszert. Ezen kívül figyelheti a fontos konfigurációs fájlokat és visszaállíthatja azokat sérülés esetén, automatikus műveleteket hajthat végre a fájlok szerverre való feltöltése után stb. [1]
Bár az Inotify mechanizmus az operációs rendszer része, rendszerhívásokkal érhető el, és ezért nem igényel további könyvtárak telepítését, a parancssorhoz létrejött az inotify-tools csomag, amely lehetővé teszi az Inotify használatát szkriptekben. [1] [2] .
A két fő inotify-eszköz az inotifywatch és az inotifywait, például a következő parancs a /tmp [1] könyvtár használati statisztikáit gyűjti össze :
inotifywatch -r /tmpA fájlok vagy könyvtárak valós idejű figyeléséhez használhatja az inotifywait [1] parancsot :
$ inotifywait -mr /tmp Órák beállítása. Vigyázat: mivel az -r-t megadták, ez eltarthat egy ideig! Órák létesültek. /tmp/ példa-tmp-fájl LÉTREHOZÁSA /tmp/ Példa-tmp-fájl NYITÁSA /tmp/ CLOSE_WRITE,CLOSE example-tmp-filePéldák az Inotifyt használó egyéb segédprogramokra : [1] :
A függvényekkel való munkavégzéshez hozzá kell adni a sys/inotify.h fejlécfájlt .
int inotify_init()Létrehoz egy fájlleírót, amelyből az összes előforduló esemény beolvasásra kerül.
int inotify_add_watch(int fd, const char * elérési út, __u32 maszk);Létrehoz egy egyedi (fájlleírón belüli) figyelési leírót, amely az utak és események azonosítására szolgál. Ebben az esetben csak a maszkban megadott események engedélyezettek.
int inotify_rm_watch(int fd, __u32 wd);Töröl egy meglévő megfigyelési fogantyút.
Az események fogadása a hagyományos read rendszerhívással történik, amely egy inotify_event struktúrába olvas be a következő mezőkkel:
Azonosító | Jelentése |
---|---|
wd | megfigyelési leíró |
maszk | esemény maszk |
aprósütemény | időzítés IN_MOVED_FROM és IN_MOVED_TO között |
len | fájlnév hossza |
név | fájlnév ahhoz a könyvtárhoz képest, amelyhez a figyelési leírót létrehozták |
Az eseménymaszk a következő állandók logikai VAGY értéke:
Események generálásakor a következő állandók is használhatók: