Ciągłe monitorowanie plików otwartych / dostępnych przez proces

24

lsof -p 12345 wyświetli listę wszystkich plików otwartych przez proces, którego pid wynosi 12345, ale tylko przez określony czas.

Jak możemy w sposób ciągły monitorować proces od początku do końca (aż do jego zakończenia), aby wyświetlić listę / pokazać każdy pojedynczy plik, do którego ma dostęp proces przez cały okres jego użytkowania?

MA1
źródło

Odpowiedzi:

31

Spróbuj z strace -p 12345; powinien zrobić to, co próbujesz osiągnąć.

Dane wyjściowe można filtrować, aby wyświetlać tylko otwarte pliki ( komentarz Dana D. ):

strace -e open -p 12345

Uwaga: możesz także śledzić szybko działające procesy strace -e open <command>.

Jens Erat
źródło
wyjście nie jest przyjazne i zbyt wiele dodatkowych rzeczy.
MA1,
Możesz to naprawić za pomocą instalacji rurowej - strace -p {pid} | grep -i "Open" | tee files_opened.log. Kluczem jest grep, który pozwala filtrować dane wyjściowe dla żądanego wywołania systemowego (np open().).
11
@Ninefingers Właściwie stracemoże to zrobić lepiej niż grepz -eopcją:strace -e open
Dan D.
@DanD o tak, ofc :)
Kiedy zabiję polecenie strace, zabija także śledzony obiekt. Dlaczego tak się dzieje (cygwin)?
CMCDragonkai
6

Nowe narzędzie fatrace to zrobi: https://launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

Nie używaj opcji -p, oznacza to przeciwieństwo tego, co oznacza w lsof lub innych narzędziach.

Bryce
źródło
3

Spowoduje to zapętlenie ponownego uruchamiania polecenia i czyszczenia ekranu za każdym razem:

watch "lsof -p 12345"

OSTRZEŻENIE: spowoduje to pominięcie szybkiego dostępu do plików i nadaje się tylko do wyświetlania plików długo stojących

jcalfee314
źródło
2
Jest to nieco niezdarne w porównaniu do innych używanych odpowiedzi strace.
David Foerster,
1
To niedokładne rozwiązanie - proces może wykorzystywać pliki między wykonaniamilsof
Dor
@Dor możesz ustawić czas lsof na sub 1 sekundę i zwiększyć jego precyzję. Chociaż jest nieporadny w porównaniu do innych, mylisz się, ponieważ jest to niedokładne rozwiązanie.
Jordon Bedwell
Jeśli patrzysz na długą operację na pliku (np. Tworzenie kopii zapasowej bazy danych), może to być dobra prosta alternatywa.
jcalfee314