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.