Próbuję debugować aplikację na Ubuntu - muszę wysłuchać prób otwarcia plików (nawet w przypadku plików, które nie istnieją).
Process Monitor (wcześniej znany jako FileMon ) jest dostępny w systemie Windows - co jest na pasku narzędzi Ubuntu?
Dzięki!
Ashley
To zależy od tego, czego chcesz:
Na ogół chcesz spojrzeć na inotify, aby zobaczyć wszystkie dostępy do plików dokonywane przez dowolny proces.
W małej, strace pozwoli ci obserwować wywołania systemowe wywołane przez określony proces. Strace jest niesamowity. Możesz na przykład śledzić wywołania procesu w celu „otwarcia”
strace -f -eopen $cmd
. Strona człowiek ma pełne szczegóły dotyczące składni, oczywiście.źródło
strace
przed aplikacją startową dobrze jest obserwować, co robi aplikacja.lsof
dobrze jest zobaczyć, z jakich plików korzysta już uruchomiona aplikacja.BTW:
lsof -ni:22
pokazuje, który proces używa portu 22.źródło
SGI ma narzędzie, które możesz wypróbować: http://oss.sgi.com/projects/fam/
źródło
Oto przykład użycia strace do śledzenia zmian plików:
strace -f -e trace=file -p7546 -o /tmp/outputfile
-f
zapewnia przechwytywanie zdarzeń z procesów potomnych.-e trace=file
mówi, że powinniśmy uchwycić wywołań systemowych związanych plikach (npstat
,open
,futex
itd.)-p
jest identyfikator procesu (pobierane zps -aux
lub innych środków)-o
określono OutPutFile (może być wiele danych i można zamiast tego użyć grep jako filtr.źródło
Wypróbuj sysdig . Na przykład:
źródło
To wymaga pomocy Mortadelo. http://gitorious.org/mortadelo
źródło
To stare, ale myślę, że dobrym pomysłem jest zaktualizowanie go do dzisiejszej rzeczywistości.
Do debugowania tylko jednego procesu i ich dzieci, strace jest nadal najlepszym sposobem. Może z łatwością wyświetlać dostęp do wszystkich plików, nawet w przypadku brakujących plików.
W przypadku ogólnego debugowania systemu funkcja kontroli w jądrze może to zrobić i jest to zalecany sposób. Nie potrzebuje żadnej łaty na najnowsze jądra, wystarczy zainstalować pakiet audytu
Oto proste GUI do korzystania z niego:
audyt-gui
To replikuje filemona systemu Windows, monitoruje dostęp do pliku dla wszystkich miejsc, procesów itp
sprawdź także ten post
źródło
Oto, co działało dla mnie dobrze (Linux Mint 19.1):
sudo lsof 2>&1 | grep programnamehere
Nie jestem pewien, dlaczego
2>&1
był potrzebny, ale nie filtrował, chyba że go użyłem.źródło