Próbowałem tego tracefile
. Dla mnie dało to znacznie mniej wyników niż moje własne strace ... | sed ... | sort -u
. Dodałem nawet -s256
do strace(1)
wiersza poleceń, ale niewiele to pomogło ...
Potem spróbowałem loggedfs
. Po pierwsze nie powiodło się, ponieważ nie miałem dostępu do odczytu / zapisu do katalogu, w którym próbowałem się zalogować. Po tymczasowym zrobieniu chmod 755 dostałem kilka hitów ...
Ale dla mnie najlepsze wydaje się wykonanie następujących czynności:
inotifywait -m -r -e OPEN /path/to/traced/directory
A następnie przetwarzaj dane wyjściowe po przetworzeniu interesującego Cię procesu.
Nie łapie to dostępu do procesu procesowego dostępu do
katalogu śledzonego ani nie wie, czy jakiś inny proces uzyskał dostęp do tego samego drzewa katalogów, ale w wielu przypadkach jest to wystarczające narzędzie do wykonania zadania.
EDYCJA: inotifywait nie przechwytuje dostępu do dowiązań symbolicznych (tylko cele po rozwiązaniu dowiązań symbolicznych). Uderzyło mnie to, gdy zarchiwizowałem biblioteki, do których program ma dostęp w przyszłości. Użyłem dodatkowej globalnej hackery w Perlu, aby wybrać dowiązania symboliczne wzdłuż powiadomionych bibliotek, aby wykonać zadanie w tym konkretnym przypadku.
EDYCJA 2: przynajmniej podczas powiadamiania samych plików i dowiązań symbolicznych z wiersza poleceń inotifywait (np. inotifywait -m file symlink
Lub inotifywait symlink file
) pokaże dostęp do tego, który z nich jest pierwszy w wierszu poleceń (niezależnie od tego, który file
z nich symlink
jest dostępny). inotifywait nie obsługuje IN_DONT_FOLLOW - co, gdy próbowałem programowo, pozwala tylko zobaczyć dostęp file
(który może, ale nie musi, być tym, czego się spodziewa ...) niezależnie od kolejności w wierszu poleceń
strace
, zakładam, że jesteś szczególnie zainteresowany Linuksem. Poprawny?