J'essaie de tracer un comportement étrange de quelques processus et je suis tombé sur un point que je ne sais pas comment tracer le passé. Le processus suspendu, que j'ai attaché à l'utilisation, a strace -p
montré ceci:
Process 7926 attached - interrupt to quit
read(3,
D'accord, il attend donc une entrée sur fd 3, alors je suis allé vérifier de quoi il s'agit:
$ ls -l /proc/7926/fd/3
lr-x------ 1 user grp 64 Mar 15 10:41 /proc/7926/fd/3 -> pipe:[20043922]
D'accord, c'est donc une pipe ... maintenant la question - qui est l'auteur de cette pipe? Je rappelle que sous Linux, il existe une fonctionnalité spéciale pour les sockets de domaine Unix où vous pouvez demander un chemin de fichier qui commence par un octet NUL pour accéder à "l'espace de noms de socket abstrait" (mentionné ici: http://tkhanson.net/cgit.cgi /misc.git/plain/unixdomain/Unix_domain_sockets.html ). Je ne sais pas s'il y a quelque chose de similaire pour les tuyaux dont je pourrais profiter, mais je n'ai rien trouvé.
J'espérais un outil comme fuser
ou lsof
pourrait aider, mais je n'ai rien obtenu.
Des idées?
Vous pouvez obtenir la liste des processus utilisant le canal en utilisant la
lsof
commande:lsof | grep 'FIFO.*20043922'
La sortie affichera les lecteurs (dans la colonne FD avec des entrées comme 1r) et les écrivains (mêmes colonnes avec des entrées comme 2w).
la source