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?


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>.


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


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.