zawiadomić - inotify

inotify ( inode notify) to podsystem jądra Linuksa stworzony przez Johna McCutchana, który monitoruje zmiany w systemie plików i zgłasza te zmiany aplikacjom. Może być używany do automatycznej aktualizacji widoków katalogów, ponownego ładowania plików konfiguracyjnych, zmian w dzienniku, tworzenia kopii zapasowych, synchronizacji i przesyłania. Polecenia inotifywait i inotifywatch umożliwiają korzystanie z podsystemu inotify z wiersza poleceń. Jednym z głównych zastosowań są narzędzia wyszukiwania na pulpicie, takie jak Beagle , których funkcjonalność pozwala na ponowne indeksowanie zmienionych plików bez skanowania systemu plików w poszukiwaniu zmian co kilka minut, co byłoby bardzo nieefektywne.

inotify zastąpił wcześniejszy obiekt dnotify , który miał podobne cele. Został on włączony do głównej linii jądra Linuksa w wersji jądra 2.6.13, wydanej 29 sierpnia 2005 r.; późniejsze wersje jądra zawierały dalsze ulepszenia. Wymagane interfejsy biblioteczne zostały dodane do Biblioteki GNU C (glibc) w wersji 2.4, wydanej w marcu 2006, podczas gdy obsługa inotify została zakończona w wersji glibc 2.5, wydanej we wrześniu 2006.

Ograniczenia

Ograniczenia nałożone przez inotify obejmują:

  • Inotify nie obsługuje rekurencyjnych katalogów obserwacyjnych, co oznacza, że ​​dla każdego podkatalogu należy utworzyć osobny obserwacyjny inotify.
  • Inotify zgłasza niektóre, ale nie wszystkie zdarzenia w sysfs i procfs .
  • Powiadamianie przez inotify wymaga, aby jądro było świadome wszystkich istotnych zdarzeń systemu plików, co nie zawsze jest możliwe w przypadku sieciowych systemów plików, takich jak NFS, gdzie zmiany wprowadzone przez jednego klienta nie są natychmiast rozgłaszane do innych klientów.
  • Zdarzenia zmiany nazwy nie są obsługiwane bezpośrednio; tj. inotify wystawia dwa oddzielne zdarzenia, które muszą być zbadane i dopasowane w kontekście potencjalnych warunków wyścigu.

Historia

  • Lipiec 2004: pierwsze ogłoszenie o wydaniu
  • 29 sierpnia 2005: opublikowano jądro Linux w wersji 2.6.13, zawierające scalony kod inotify
  • Marzec 2006: opublikowano bibliotekę GNU C (glibc) w wersji 2.4, wprowadzając początkowe wsparcie inotify
  • Wrzesień 2006: Wydano Glibc w wersji 2.5 z pełną obsługą inotify

Przewaga nad dnotify

Istnieje wiele zalet korzystania z inotify w porównaniu ze starszym interfejsem API dnotify, który został zastąpiony. W przypadku dnotify program musiał używać jednego deskryptora pliku dla każdego monitorowanego katalogu. Może to stać się wąskim gardłem, ponieważ można osiągnąć limit deskryptorów plików na proces. Później stworzono fanotify, aby rozwiązać ten problem. Użycie deskryptorów plików wraz z dnotify również okazało się problemem podczas korzystania z nośników wymiennych. Nie można było odmontować urządzeń, ponieważ deskryptory plików sprawiały, że zasób był zajęty.

Inną wadą dnotify jest poziom szczegółowości, ponieważ programiści mogą monitorować zmiany tylko na poziomie katalogu. Aby uzyskać dostęp do szczegółowych informacji o zmianach środowiskowych, które pojawiają się po wysłaniu wiadomości z powiadomieniem, należy użyć struktury statystyk; jest to uważane za zło konieczne, ponieważ musi być utrzymywana pamięć podręczna struktur statystyk, ponieważ każda nowa wygenerowana struktura statystyk jest porównywana z tą z pamięci podręcznej.

Interfejs API inotify wykorzystuje mniej deskryptorów plików, umożliwiając programistom korzystanie z ustanowionego interfejsu select i poll zamiast systemu powiadamiania o sygnałach używanego przez dnotify . Ułatwia to również integrację z istniejącymi bibliotekami opartymi na selekcji lub sondażu (takimi jak GLib ).

Zobacz też

Bibliografia

Linki zewnętrzne