En regardant dans/proc/$ mypid/fd /, je vois ces fichiers
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 0 -> /dev/pts/36 (deleted)
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 3 -> socket:[1424055856]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 4 -> socket:[1424055868]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 5 -> socket:[1424055882]
Parce que j'ai accès au code, je sais que ces sockets sont liées à TCP (l'une est une connexion au port 5672 sur une machine, une autre est une connexion au port 3306 sur une autre machine) , mais je veux savoir quelle socket est liée à quelle connexion. Comment faire?
Plus généralement, comment demander au système d'exploitation ce qu'il y a à l'autre extrémité du socket?
Une bonne option pourrait être lsof
. Comme man lsof
indique qu'il est pratique d'obtenir des informations sur open files such as Internet sockets or Unix Domain sockets
.
Dans un premier temps, obtenez un aperçu de /proc/$PID/fd/
et les numéros de socket répertoriés.
Par exemple, socket:[14240]
pourrait vous intéresser.
Utilisez ensuite lsof -i -a -p $PID
pour imprimer une liste de tous les fichiers réseau $PID
les usages.
-i
produit une liste de fichiers réseau appartenant à un utilisateur ou à un processus
-a
combine logiquement les paramètres donnés par AND
-p $PID
sélectionne uniquement les informations sur votre processus
Une sortie typique pour mon navigateur fonctionnant avec un PID de 2543
pourrait être:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
browser 2543 pidi 55u IPv4 14240 0t0 TCP pidi.router.lan:55038->stackoverflow.com:https (ESTABLISHED)
et des lignes plus similaires.
Génial! Examinons maintenant de plus près la colonne DEVICE
. Il correspond à notre socket précédemment répertorié de /proc/$PID/fd/
!
Et grâce à la section NAME
, nous pouvons dire quelle est l'autre extrémité de notre socket.
Dans une exécution réelle, vous pouvez obtenir une bonne quantité de sortie, mais simplement filtrer ou grep
pour votre socket d'intérêt.
Je suis sûr que l'on pourrait combiner toutes les commandes, mais cela devrait suffire pour vous aider à démarrer.