Innotifică

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 28 februarie 2015; verificările necesită 6 modificări .

Inotify  este un subsistem al nucleului Linux care vă permite să primiți notificări despre evenimente legate de fișierele și directoarele sistemului de fișiere. De exemplu, deschiderea fișierelor și directoarelor pentru citire sau scriere, schimbarea atributelor , mutarea, ștergerea etc. A fost inclus în nucleul principal din 2.6.13, dar poate fi folosit cu nucleele anterioare folosind o suprapunere de corecție. Din 2.6.32 Inotify a fost înlocuit cu Fsnotify și Inotify se bazează pe Fsnotify, dar pentru aplicațiile practice acest detaliu a rămas neimportant [1] .

Prin abonarea la evenimentele Inotify, scripturile nu trebuie să scaneze periodic sistemul de fișiere pentru modificări. Mai mult, abonamentul la eveniment nu împiedică demontarea volumului [1] .

Scopul principal este în motoarele de căutare locale (de exemplu , Beagle ), astfel încât programul de indexare nu trebuie să scaneze periodic întregul sistem de fișiere. În plus, puteți monitoriza fișierele de configurare importante și le puteți restaura în caz de deteriorare, puteți efectua acțiuni automate după încărcarea fișierelor pe server etc. [1]

Utilități

Deși mecanismul Inotify face parte din sistemul de operare, accesibil printr-un set de apeluri de sistem și, prin urmare, nu necesită instalarea de biblioteci suplimentare, pachetul inotify-tools a fost creat pentru linia de comandă, permițându-vă să utilizați Inotify în scripturi. [1] [2] .

Cele două instrumente principale de inotify sunt inotifywatch și inotifywait, de exemplu, următoarea comandă colectează statistici de utilizare pentru directorul /tmp [1] :

inotifywatch -r /tmp

Pentru a monitoriza fișierele sau directoarele în timp real, puteți utiliza inotifywait [1] :

$ inotifywait -mr /tmp Configurarea ceasurilor. Atenție: deoarece a fost dat -r, acest lucru poate dura ceva timp! Ceasuri stabilite. /tmp/ CREATE example-tmp-file /tmp/ DESCHIDERE exemplu-tmp-file /tmp/ CLOSE_WRITE,CLOSE exemplu-tmp-file

Exemple de alte utilitare care utilizează Inotify sunt [1] :

Apeluri de sistem

Pentru a lucra cu funcții, trebuie să includeți fișierul antet sys/inotify.h .

int inotify_init()

Creează un descriptor de fișier din care sunt citite toate evenimentele care au loc.

int inotify_add_watch(int fd, const char * cale, __u32 mask);

Creează un descriptor de urmărire unic (în cadrul unui descriptor de fișier) care este utilizat pentru a identifica căile și evenimentele care apar. În acest caz, sunt permise numai acele evenimente care sunt specificate în mască.

int inotify_rm_watch(int fd, __u32 wd);

Șterge un indicator de observație existent.

Primirea evenimentelor

Evenimentele sunt primite folosind apelul de sistem de citire tradițional, care citește într-o structură inotify_event cu următoarele câmpuri:

Identificator Sens
wd descriptor de observație
masca masca de eveniment
prăjitură marcaj de sincronizare între IN_MOVED_FROM și IN_MOVED_TO
len lungimea numelui de fișier
Nume nume de fișier relativ la directorul pentru care a fost creat descriptorul de ceas

Masca de eveniment este un OR logic al următoarelor constante:

La generarea evenimentelor, pot fi utilizate și următoarele constante:

Note

  1. 1 2 3 4 5 6 7 Vervloesem, 2011 .
  2. Inotify-tools Arhivat la 1 iunie 2014 la Wayback Machine este o bibliotecă C și un set de programe de linie de comandă pentru Linux care oferă o interfață simplă pentru a notifica

Literatură

Link -uri