Inotify

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 28. února 2015; kontroly vyžadují 6 úprav .

Inotify  je subsystém linuxového jádra , který umožňuje přijímat upozornění na události související se soubory a adresáři souborového systému. Například otevírání souborů a adresářů pro čtení nebo zápis, změnu atributů , přesouvání, mazání atd. Je součástí hlavního jádra od 2.6.13, ale lze jej použít s dřívějšími jádry pomocí překryvné opravy. Od 2.6.32 bylo Inotify nahrazeno Fsnotify a Inotify je založeno na Fsnotify, ale pro praktické aplikace tento detail zůstal nedůležitý [1] .

Když se přihlásíte k odběru událostí Inotify, skripty nemusí pravidelně prohledávat souborový systém kvůli změnám. Navíc odběr události nebrání odpojení svazku [1] .

Hlavní oblast působnosti je v místních vyhledávačích (například Beagle ), takže program indexeru nemusí pravidelně skenovat celý souborový systém. Kromě toho můžete sledovat důležité konfigurační soubory a obnovit je v případě poškození, provádět automatické akce po nahrání souborů na server atd. [1]

Utility

Přestože je mechanismus Inotify součástí operačního systému, je přístupný prostřednictvím sady systémových volání, a proto nevyžaduje instalaci dalších knihoven, pro příkazový řádek byl vytvořen balíček inotify-tools, který vám umožňuje používat Inotify ve skriptech. [1] [2] .

Dva hlavní nástroje inotify jsou inotifywatch a inotifywait, například následující příkaz shromažďuje statistiky využití pro adresář /tmp [1] :

inotifywatch -r /tmp

Chcete-li sledovat soubory nebo adresáře v reálném čase, můžete použít inotifywait [1] :

$ inotifywait -mr /tmp Nastavení hodinek. Pozor: protože bylo dáno -r, může to chvíli trvat! Hodinky zavedeny. /tmp/ VYTVOŘTE soubor příklad-tmp /tmp/ OTEVŘÍT soubor příklad-tmp /tmp/ CLOSE_WRITE,CLOSE example-tmp-file

Příklady dalších nástrojů používajících Inotify jsou [1] :

Systémová volání

Chcete-li pracovat s funkcemi, musíte zahrnout hlavičkový soubor sys/inotify.h .

int inotify_init()

Vytvoří deskriptor souboru, ze kterého se čtou všechny události, ke kterým dojde.

int inotify_add_watch(int fd, const char * cesta, maska ​​__u32);

Vytvoří jedinečný (v rámci deskriptoru souboru) sledovací deskriptor, který se používá k identifikaci cest a událostí, ke kterým dochází. V tomto případě jsou povoleny pouze ty události, které jsou uvedeny v masce.

int inotify_rm_watch(int fd, __u32 wd);

Odstraní existující popisovač pozorování.

Příjem událostí

Události jsou přijímány pomocí tradičního systémového volání read, které se načítá do struktury inotify_event s následujícími poli:

Identifikátor Význam
wd deskriptor pozorování
maska maska ​​události
cookie časová značka mezi IN_MOVED_FROM a IN_MOVED_TO
len délka souboru
název název_souboru vzhledem k adresáři, pro který byl vytvořen deskriptor sledování

Maska události je logickým OR následujících konstant:

Při generování událostí lze také použít následující konstanty:

Poznámky

  1. 1 2 3 4 5 6 7 Vervloesem, 2011 .
  2. Inotify-tools Archived 1. června 2014 na Wayback Machine je knihovna C a sada programů příkazového řádku pro Linux poskytující jednoduché rozhraní pro inotify

Literatura

Odkazy