surveiller les fichiers de processus ouverts sur linux (en temps réel)


10

Les fichiers ouverts par le processus XYZ peuvent être trouvés avec la commande

ls -l /proc/PID/fd

Existe-t-il de toute façon une méthode plus interactive comme taill'actualisation automatique toutes les x secondes?

Réponses:


15

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.


1
sleep lui-même peut être utilisé comme condition dans la boucle while, donc votre exemple peut être écrit de façon plus élégante comme ceci: while sleep 10; faire ls -l / proc / $$ / fd; fait
ipozgaj

7

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

2
C'est vraiment la meilleure réponse. Je recommanderais les drapeaux -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.
Aea

4

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.


il ne donnera pas de liste TOUTES les 2 secondes. Le paramètre -r 2 est manquant pour que cela fonctionne! -p est le PID. La réponse est très mauvaise!
mahatmanich

2
Nice, n'était pas au courant de l' -roption pour lsof. Par conséquent, j'avais l'habitude watchd'exécuter lsoftoutes les deux secondes.
Christian

0

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.