2010-09-08 12 views
7

Mam plik i wiele procesów (i wątków procesu) uzyskuję do niego dostęp.Jak monitorować, które procesy uzyskują dostęp do konkretnego pliku w systemie Unix?

Chcę monitorować plik, aby uzyskać listę wszystkich procesów próbujących uzyskać dostęp do pliku. Umiejętność zapisywania znaczników czasu byłaby również doskonała do celów rejestracyjnych, ale bez niego można się obejść.

  • Czy istnieje narzędzie Unix, które robi coś podobnego?

  • Jeśli takie narzędzie nie istnieje, jak mam to zaprogramować przy użyciu skryptu (shell, Perl) lub programu (C, C++)?

+2

Prawdopodobnie nie ma uniwersalnego sposobu uniknięcia tego. Na przykład Linux ma inotify (patrz odpowiedź Carlosa), ale inotify istnieje tylko w Linuksie. Inne odmiany Uniksa mają różne metody. – JeremyP

Odpowiedz

6

Myślę, że podstawową funkcjonalności, której szukasz, jest komenda UNIX fuser.

Dzięki temu dowiesz się, jakie procesy używają pliku (lub portu, jeśli chcesz).

+0

Wprawdzie nie jest to raport czasowy - ale powinno być na tyle łatwe, aby móc go rozbudować, aby stworzyć to, czego potrzebujesz – lucas1000001

1

Możesz chcieć spojrzeć na lsof.

+1

Program mógł go otworzyć i zamknąć, gdy uruchomię 'lsof'. W tym przypadku nie zostanie on zarejestrowany w 'lsof'. Potrzebuję sposobu na ciągłe monitorowanie pliku, aby zawsze, gdy jest on dostępny przez jakiś proces, wyzwalacz rejestruje dostęp do pliku dziennika. – Lazer

9

Pod Linuksem, inotify może być tym, czego szukasz.

+0

Ja drugi to! inotify pozwala również na dodawanie haków uruchamianych w określonych momentach: kiedy dostęp do pliku jest zapisywany, dołączany do itp .; Używałem go jakiś czas temu, aby automatycznie git zatwierdzać pliki zmodyfikowane w katalogu, gdy zostały zmienione lub zostały usunięte – mfontani

2

FAM - File Alteration monitora http://oss.sgi.com/projects/fam/ lub Gamin http://people.gnome.org/~veillard/gamin/

może pomóc (gamin wydaje utrzymane, a ja nie mogę powiedzieć tego samego o FAM).

Możesz załączyć aplikację do FAM/Gamin, a następnie otrzymasz powiadomienie, jeśli coś się stanie z oglądanymi plikami. Szczegóły sugeruję: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=bks&fname=/SGI_Developer/books/IIDsktp_IG/sgi_html/ch08.html

Powiązane problemy