Inotify är ett undersystem till Linux-kärnan som låter dig ta emot meddelanden om händelser relaterade till filer och kataloger i filsystemet. Till exempel, öppna filer och kataloger för att läsa eller skriva, ändra attribut , flytta, ta bort, etc. Det har inkluderats i huvudkärnan sedan 2.6.13, men kan användas med tidigare kärnor med en patch-överlagring. Sedan 2.6.32 har Inotify ersatts av Fsnotify och Inotify är baserat på Fsnotify, men för praktiska tillämpningar har denna detalj förblivit oviktig [1] .
Genom att prenumerera på Inotify-händelser behöver skript inte regelbundet skanna filsystemet efter ändringar. Dessutom hindrar inte händelseprenumerationen att volymen avmonteras [1] .
Den huvudsakliga omfattningen är i lokala sökmotorer (till exempel Beagle ), så indexeringsprogrammet behöver inte periodiskt skanna hela filsystemet. Dessutom kan du övervaka viktiga konfigurationsfiler och återställa dem i händelse av skada, utföra automatiska åtgärder efter uppladdning av filer till servern, etc. [1]
Även om Inotify-mekanismen är en del av operativsystemet, tillgänglig via en uppsättning systemanrop, och därför inte kräver installation av ytterligare bibliotek, har paketet inotify-tools skapats för kommandoraden, vilket gör att du kan använda Inotify i skript [1] [2] .
De två huvudsakliga inotify-verktygen är inotifywatch och inotifywait, till exempel, följande kommando samlar in användningsstatistik för katalogen /tmp [1] :
inotifywatch -r /tmpFör att övervaka filer eller kataloger i realtid kan du använda inotifywait [1] :
$ inotifywait -mr /tmp Sätta upp klockor. Se upp: eftersom -r gavs kan detta ta ett tag! Klockor etablerade. /tmp/ SKAPA exempel-tmp-fil /tmp/ ÖPPNA exempel-tmp-fil /tmp/ CLOSE_WRITE,CLOSE exempel-tmp-filExempel på andra verktyg som använder Inotify är [1] :
För att arbeta med funktioner måste du inkludera rubrikfilen sys/inotify.h .
int inotify_init()Skapar en filbeskrivning från vilken alla händelser som inträffar läses.
int inotify_add_watch(int fd, const char * sökväg, __u32 mask);Skapar en unik (inom en filbeskrivning) bevakningsbeskrivning som används för att identifiera sökvägar och händelser som inträffar. I det här fallet är endast de händelser som anges i masken tillåtna.
int inotify_rm_watch(int fd, __u32 wd);Tar bort ett befintligt observationshandtag.
Händelser tas emot med det traditionella läs-systemanropet, som läser in i en inotify_event-struktur med följande fält:
Identifierare | Menande |
---|---|
wd | observationsbeskrivning |
mask | event mask |
kaka | tidsmarkering mellan IN_MOVED_FROM och IN_MOVED_TO |
len | filnamnets längd |
namn | filnamn i förhållande till katalogen för vilken bevakningsbeskrivningen skapades |
Händelsemasken är ett logiskt ELLER av följande konstanter:
Vid generering av händelser kan följande konstanter också användas: