Réponses:
Essayez la watchcommande:
watch -n 10 ls -l /proc/$$/fd
La montre est belle.
Vous pouvez utiliser une boucle old school while:
while :
do
ls -l /proc/$$/fd
sleep 10
done
watchest dans le paquet procps sur les systèmes basés sur Debian et le rpm procps sur les systèmes dérivés de RedHat.
Si vous souhaitez voir chaque fichier lors de son ouverture, vous pouvez le filtrer avec strace. Par exemple:
strace -p _pid_of_app_ -e trace=open,close
-yet -fsi vous essayez de déboguer quelque chose qui s'exécute dans un shell. Il suffit de passer le shell PID et -fsuivra toutes les fourches.
Vous pouvez combiner lsofet watch.
Par exemple watch "lsof -p 1234", vous donnera une liste de tous les fichiers ouverts de pid 1234 toutes les 2 secondes. Vous pouvez modifier certains paramètres pour répondre à vos besoins.
-roption pour lsof. Par conséquent, j'avais l'habitude watchd'exécuter lsoftoutes les deux secondes.
J'ai créé un fichier bash où j'écrivais la sortie de la commande dans un fichier. Le fichier a été généré à la date actuelle de base. Ici, je compte le nombre de fichiers ouverts.
#!/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