Какой поток слушает определенный порт UDP - PullRequest
0 голосов
/ 10 октября 2018

Я запустил:

# lsof | grep 10900

И его вывод:

MyExecutab 103497        myuser    7u     IPv4             985833       0t0        UDP my.example.com:10900 
MyExecutab 103497 103498 myuser    7u     IPv4             985833       0t0        UDP my.example.com:10900 
MyExecutab 103497 103499 myuser    7u     IPv4             985833       0t0        UDP my.example.com:10900 
MyExecutab 103497 103500 myuser    7u     IPv4             985833       0t0        UDP my.example.com:10900 
MyExecutab 103497 103501 myuser    7u     IPv4             985833       0t0        UDP my.example.com:10900 
MyExecutab 103497 103502 myuser    7u     IPv4             985833       0t0        UDP my.example.com:10900 
MyExecutab 103497 103503 myuser    7u     IPv4             985833       0t0        UDP my.example.com:10900 

Я пытаюсь выяснить, какой поток читает с UDP-порта 10900.

Похоже, что с этого порта читают 7 потоков, правда?

Мне кажется, что на самом деле читает только один поток, но я просто перечислил все дочерние потоки (внутри одного процесса) и родительский поток.

netstat -plun показывает, что только родительский поток (PID) прослушивает этот порт:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 10.7.168.173:10900      0.0.0.0:*                           103497/MyExecutable 

Я также проверил /proc/[pid]/fd.Поскольку только 103497 является PID, остальные являются TID, поэтому /proc/ имеет только 103497, но не все остальные.

Так есть ли способ выяснить, какой поток слушает определенный порт UDP?

Я нахожусь на CentOS 7 (ядро 3.10).

Спасибо!

1 Ответ

0 голосов
/ 10 октября 2018

Запустите strace -ffp <pid> и посмотрите, какие потоки используют дескриптор файла 7.

...