Respostas:
Experimente o watch
comando:
watch -n 10 ls -l /proc/$$/fd
O relógio é bom.
Você pode usar uma velha escola while loop:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watch
está no pacote procps em sistemas baseados em debian e o procps rpm em sistemas derivados RedHat.
Se você deseja ver cada arquivo enquanto ele está sendo aberto, é possível filtrá-lo com strace
. Por exemplo:
strace -p _pid_of_app_ -e trace=open,close
-y
e -f
se você estiver tentando depurar algo em execução em um shell. Basta passar o PID do shell e -f
seguirá os garfos.
Você pode combinar lsof
e watch
.
Por exemplo watch "lsof -p 1234"
, você terá uma lista de todos os arquivos abertos do pid 1234 a cada 2 segundos. Você pode alterar alguns parâmetros para atender às suas necessidades.
-r
opção lsof
. Portanto, eu costumava watch
executar a lsof
cada dois segundos.
Criei um arquivo bash onde estava gravando a saída do comando em um arquivo. O arquivo foi gerado na data atual base. Aqui estou contando o número de arquivos abertos.
#!/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