Réponses:
Essayez la watch
commande:
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
watch
est 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
-y
et -f
si vous essayez de déboguer quelque chose qui s'exécute dans un shell. Il suffit de passer le shell PID et -f
suivra toutes les fourches.
Vous pouvez combiner lsof
et 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.
-r
option pour lsof
. Par conséquent, j'avais l'habitude watch
d'exécuter lsof
toutes 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