Vous pouvez voir le tuyau /proc/$PID/fd
. Le descripteur est un lien symbolique vers quelque chose comme pipe:[188528098]
. Avec ces informations, vous pouvez rechercher l'autre processus:
$ lsof -n | grep -w 188528098
sleep 1565 hl 1w FIFO 0,12 0t0 188528098 pipe
sleep 1566 hl 0r FIFO 0,12 0t0 188528098 pipe
Ou, si vous voulez être sûr (pour le traitement automatique) que le numéro est le socket et ne fait pas partie d'un nom de fichier:
$ lsof -n | awk 'NF==9 && $5=="FIFO" && $9=="pipe" && $8==188528098'
Avec lsof
4.88 et supérieur, vous pouvez également utiliser les drapeaux -E
ou +E
:
En combinaison avec -p <pid>
, -d <descriptor>
vous pouvez obtenir les informations de point final pour un particulier descripteur d'une donnée pid .
$ sleep 1 | sh -c 'lsof -E -ap "$$" -d 0; exit'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sh 27176 chazelas 0r FIFO 0,10 0t0 2609460 pipe 27175,sleep,1w
Ci-dessus nous disant que fd
0 de sh
est un tuyau avec fd 1 de sleep
l'autre extrémité. Si vous passez -E
à +E
, vous obtenez également les informations complètes pour ce fd de sleep
:
$ sleep 1 | sh -c 'lsof +E -ap "$$" -d 0; exit'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sleep 27066 chazelas 1w FIFO 0,10 0t0 2586272 pipe 27067,sh,0r 27068,lsof,0r
sh 27067 chazelas 0r FIFO 0,10 0t0 2586272 pipe 27066,sleep,1w
(voir comment a lsof
également le tuyau sur son stdin)