Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Inotify

Z Wikipedii, wolnej encyklopedii

inotify – podsystemjądra Linuksa, który powiadamia o zdarzeniach wsystemie plików. Został napisany przezJohna McCutchana z pomocąRoberta Love’a i późniejAmy Griffis w celu zastąpieniadnotify. Było zawarte w głównych wydaniach jądra Linuksa począwszy od wersji 2.6.13, a przy użyciułat także w wersji 2.6.12 (być może jest to możliwe też we wcześniejszych wydaniach). Główną funkcją inotify jest rozszerzenie systemu plików o możliwość powiadamiania o zmianach w nim i raportowaniu tych zmian w aplikacjach.

Jego główne zastosowanie to użycie w narzędziach przeszukujących (ang.desktop search utilities) takich jakBeagle, gdzie może powiadamiać je o zmienionych plikach bez potrzeby częstego skanowania systemu plików (które byłoby bardzo nieefektywne). Informacje o zmianach w systemie plików są pobierane bezpośrednio zjądra systemu operacyjnego, dlatego zamiast aktywnego przeszukiwania odpowiednie narzędzia mogąindeksować zmiany kilka sekund po ich wystąpieniu, nie obniżając przy tym wydajności systemu.

Może być także używany do automatycznego uaktualniania widoków katalogów, ponownego wczytaniaplików konfiguracyjnych,logowania zmian, robieniakopii bezpieczeństwa i wszelkiego rodzaju synchronizacji.

Zalety

[edytuj |edytuj kod]

Inotify posiada kilka zalet w stosunku dodnotify, modułu jądra który zastąpił. W starszym module program musiał używać jednegodeskryptora pliku na każdy monitorowany katalog. Oznaczało to możliwość szybkiego wyczerpania się limitu ilości deskryptorów pliku naproces. Dodatkowo używanie deskryptorów plików przez dnotify było problemem w przypadku, gdy system plików mieścił się na wyjmowalnymnośniku danych. Wtedy ten nośnik nie mógł byćodmontowany, ponieważ otwarte deskryptory plików wskazywały na jego zajętość.Inna wada dnotify to niskaziarnistość monitoringu, tzn. można było kontrolować tylko zmiany na poziomie katalogów. By zbadać, co dokładnie się w danym katalogu zmieniło, trzeba było dodatkowo używać strukturstat. Programiści byli zmuszeni wtedy do utrzymywania kolekcji tych struktur i gdy następowała zmiana w danym katalogu, to trzeba było utworzyć nową strukturęstat w celu porównania jej z poprzednio utrzymywanymi i określeniu charakteru tych zmian.

Zasada działania

[edytuj |edytuj kod]

Inotify używa się za pomocą seriiwywołań systemowych stworzonych dla inotify.

Na początku tworzy się instancję inotify,

int inotify_init()

które zwraca deskryptor pliku, z którego czytane są wszystkie zdarzenia. W celu obserwowania wybranego katalogu wywołuje się

int inotify_add_watch(int fd, const char* pathname, int mask)

które monitoruje węzeł systemu pliku inode wskazywany przez podaną ścieżkępathname dla zdarzeń określonych za pomocą maskimask. Zwracany jest wtedy unikatowy (w ramach danej instancji) deskryptor monitorujący (ang.watch descriptor). Może tak się zdarzyć, że wiele ścieżek wskaże na ten sam węzeł inode/deskryptor monitorujący.

Wywołanie

int inotify_rm_watch(int fd, int wd)

usuwa monitoring wykonywany za pośrednictwem wskazanego deskryptora monitorującego wd.

Zdarzenia generowane przez inotify zawierają następujące informacje:

IdentyfikatorZawartość
wddeskryptor monitorujący
maskznacznik zdarzenia
cookiecookie używanie do synchronizacji pomiędzyIN_MOVED_FROM andIN_MOVED_TO
lendługość pola name
nameopcjonalna nazwa pliku powiązanego z tym zdarzeniem (w danym katalogu nadrzędnym)

Wybrane zdarzenia, które można monitorować to:

  • IN_ACCESS – odczyt pliku
  • IN_MODIFY – ostatnia modyfikacja
  • IN_ATTRIB – zmiana atrybutów pliku
  • IN_OPEN iIN_CLOSE – otwarcie albo zamknięcie pliku
  • IN_MOVED_FROM iIN_MOVED_TO – gdy plik jest przenoszony lub zmienia mu się nazwę
  • IN_DELETE – kasowanie pliku/katalogu
  • IN_CREATE – tworzenie pliku/katalogu
  • IN_DELETE_SELF – monitorowany plik jest skasowany

Historia

[edytuj |edytuj kod]

Linki zewnętrzne

[edytuj |edytuj kod]
Źródło: „https://pl.wikipedia.org/w/index.php?title=Inotify&oldid=77889153
Kategoria:

[8]ページ先頭

©2009-2026 Movatter.jp