Innotify

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 28 februari 2015; kontroller kräver 6 redigeringar .

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]

Utilities

Ä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 /tmp

Fö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-fil

Exempel på andra verktyg som använder Inotify är [1] :

Systemanrop

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.

Tar emot händelser

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:

Anteckningar

  1. 1 2 3 4 5 6 7 Vervloesem, 2011 .
  2. Inotify-tools Arkiverad 1 juni 2014 på Wayback Machine är ett C-bibliotek och en uppsättning kommandoradsprogram för Linux som ger ett enkelt gränssnitt för inotify

Litteratur

Länkar