2012-07-21 9 views
5

Wiem, że istnieje polecenie utrwalacza, które wymienia pid z procesami, ale w jaki sposób można ciągle monitorować, który proces uzyskał dostęp do pliku? (myśl o zachowaniu podobnym do tail -f filename)Jak monitorować procesy, które uzyskały dostęp do określonego pliku?

mówią, że istnieje proces, który zapisuje do pliku i zwalnia uchwyt w pewnym przedziale, więc ciężko jest przechwycić ten proces za pomocą utrwalacza.

+0

Proszę sprawdzić http://linux.die.net/man/7/inotify – Jayan

+0

Jak (nie) uciążliwe i (nie) interaktywny musisz/może sobie pozwolić na to? @ cravoori sondowanie może zadziałać, jeśli czas, o którym wspomniałeś, będzie wystarczająco długi; zastąpienie pliku nazwaną potokiem i nasycenie jego bufora zablokuje wszystkich pisarzy, dzięki czemu możesz je zidentyfikować w czasie wolnym, ale może nie być to rodzaj rozwiązania, którego szukasz; na koniec możesz zdefiniować własny system Linux [kernel tracepoints] (http://netsplit.com/2011/03/07/tracing-on-linux/), aby sprawdzić, który proces otworzył określony plik do zapisu. – vladr

Odpowiedz

1

Można obserwować wykonywanie poleceń w okresowych odstępach czasu. Zegarek obsługuje również flagę różnice dla celów różnic podświetlenie kolejnych przebiegów

watch -n 5 'fuser file_name' 
+0

tak naprawdę nie działa dla mnie ... zapisy do pliku są dość krótkie i używanie zegarka go nie złapało (próbowałem oglądać -n 1 także) – the1plummie

0

można użyć inotifywatch, zakładając, że jesteś na Linuksie.

To polecenie wydrukuje cały dostęp i modyfikuje plik przez 60 sekund, a następnie drukuje statystyki.

inotifywatch -v -e access -e modify -t 60 filename 

Można uzyskać źródło inotifywatch jako https://github.com/rvoicilas/inotify-tools/wiki

+2

To pokaże liczbę dostępów/modyfikacji, ale czy jest jakiś sposób dowiedzieć się, * który proces * uzyskał/zmodyfikował plik? – aioobe

Powiązane problemy