Pliki otwarte przez proces XYZ można znaleźć za pomocą polecenia
ls -l /proc/PID/fd
Czy jest coś, co można zrobić w bardziej interaktywny sposób, np. tail
Automatyczne odświeżanie co x sekund?
Pliki otwarte przez proces XYZ można znaleźć za pomocą polecenia
ls -l /proc/PID/fd
Czy jest coś, co można zrobić w bardziej interaktywny sposób, np. tail
Automatyczne odświeżanie co x sekund?
Spróbuj wykonać watch
polecenie:
watch -n 10 ls -l /proc/$$/fd
Zegarek jest fajny.
Możesz użyć starej pętli while szkoły:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watch
znajduje się w pakiecie procps na systemach opartych na Debianie i procps rpm na systemach pochodnych RedHat.
Jeśli chcesz zobaczyć każdy otwierany plik, możesz go przefiltrować za pomocą
strace
. Na przykład:źródło
-y
a-f
jeśli próbujesz debugować coś działającego w powłoce. Wystarczy podać PID powłoki i-f
podąży za wszelkimi widłami.Możesz połączyć
lsof
iwatch
.Na przykład
watch "lsof -p 1234"
da ci listę wszystkich otwartych plików pid 1234 co 2 sekundy. Możesz zmienić niektóre parametry, aby spełnić swoje potrzeby.źródło
-r
opcjilsof
. Dlatego zwykłemwatch
wykonywaćlsof
co dwie sekundy.Utworzyłem plik bash, w którym zapisywałem dane wyjściowe polecenia do pliku. Plik został wygenerowany na podstawie bieżącej daty. Tutaj liczę liczbę otwartych plików.
źródło