Inotify

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 28. februar 2015; checks kræver 6 redigeringer .

Inotify  er et undersystem af Linux-kernen , der giver dig mulighed for at modtage meddelelser om hændelser relateret til filer og mapper i filsystemet. For eksempel åbning af filer og mapper til læsning eller skrivning, ændring af attributter , flytning, sletning osv. Det har været inkluderet i hovedkernen siden 2.6.13, men kan bruges med tidligere kerner ved hjælp af en patch-overlay. Siden 2.6.32 er Inotify blevet erstattet af Fsnotify, og Inotify er baseret på Fsnotify, men for praktiske anvendelser er denne detalje forblevet ligegyldig [1] .

Ved at abonnere på Inotify-begivenheder behøver scripts ikke periodisk at scanne filsystemet for ændringer. Desuden forhindrer begivenhedsabonnementet ikke volumen i at blive afmonteret [1] .

Hovedområdet er i lokale søgemaskiner (for eksempel Beagle ), så indekseringsprogrammet behøver ikke periodisk at scanne hele filsystemet. Derudover kan du overvåge vigtige konfigurationsfiler og gendanne dem i tilfælde af skade, udføre automatiske handlinger efter upload af filer til serveren osv. [1]

Hjælpeprogrammer

Selvom Inotify-mekanismen er en del af operativsystemet, tilgængelig via et sæt systemkald og derfor ikke kræver installation af yderligere biblioteker, er inotify-tools-pakken blevet oprettet til kommandolinjen, så du kan bruge Inotify i scripts [1] [2] .

De to vigtigste inotify-værktøjer er inotifywatch og inotifywait, f.eks. indsamler følgende kommando brugsstatistik for mappen /tmp [1] :

inotifywatch -r /tmp

For at overvåge filer eller mapper i realtid kan du bruge inotifywait [1] :

$ inotifywait -mr /tmp Opsætning af ure. Pas på: siden -r blev givet, kan dette tage et stykke tid! Ure etableret. /tmp/ OPRET eksempel-tmp-fil /tmp/ ÅBN eksempel-tmp-fil /tmp/ CLOSE_WRITE,CLOSE eksempel-tmp-fil

Eksempler på andre værktøjer, der bruger Inotify er [1] :

Systemkald

For at arbejde med funktioner skal du inkludere headerfilen sys/inotify.h .

int inotify_init()

Opretter en filbeskrivelse, hvorfra alle hændelser, der opstår, læses.

int inotify_add_watch(int fd, const char * sti, __u32 maske);

Opretter en unik (inden for en filbeskrivelse) overvågningsbeskrivelse, der bruges til at identificere stier og hændelser, der opstår. I dette tilfælde er kun de hændelser, der er angivet i masken, tilladt.

int inotify_rm_watch(int fd, __u32 wd);

Sletter et eksisterende observationshåndtag.

Modtager begivenheder

Hændelser modtages ved hjælp af det traditionelle læsesystemkald, som læser ind i en inotify_event-struktur med følgende felter:

Identifikator Betyder
wd observationsbeskrivelse
maske event maske
cookie tidsmærke mellem IN_MOVED_FROM og IN_MOVED_TO
len filnavnets længde
navn filnavn i forhold til den mappe, som urbeskrivelsen blev oprettet for

Hændelsesmasken er en logisk ELLER af følgende konstanter:

Ved generering af hændelser kan følgende konstanter også bruges:

Noter

  1. 1 2 3 4 5 6 7 Vervloesem, 2011 .
  2. Inotify-tools Arkiveret 1. juni 2014 på Wayback Machine er et C-bibliotek og et sæt kommandolinjeprogrammer til Linux, der giver en enkel grænseflade til inotify

Litteratur

Links