Odpowiedzi:
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:
strace -p _pid_of_app_ -e trace=open,close
-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
i watch
.
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
opcji lsof
. Dlatego zwykłem watch
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.
#!/bin/bash
while :
do
cd /proc/<PID>/fd
today=$(date +"%m-%d-%Y")
filename="/tmp/${today}.txt"
ls -l | wc -l >> "${filename}"
sleep 10
done