Odpowiedzi:
Spróbuj wykonać watchpolecenie:
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
watchznajduje 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
-ya -fjeśli próbujesz debugować coś działającego w powłoce. Wystarczy podać PID powłoki i -fpodąży za wszelkimi widłami.
Możesz połączyć lsofi 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.
-ropcji lsof. Dlatego zwykłem watchwykonywać lsofco 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