Поскольку вы используете strace
Предполагаете, что вы находитесь на Linux, и вы знаете идентификатор процесса. В этом случае вы можете найти много информации в /proc
. Вот пример того, что делать.
Do ls -l /proc/<pid>/fd
. Там будет запись, соответствующая дескриптором вас интересует и что FD должен быть сокет, как, например:
$ ls -l /proc/3311/fd
total 0
lrwx------ 1 alanau alanau 64 Sep 24 20:37 0 -> /dev/pts/0
lrwx------ 1 alanau alanau 64 Sep 24 20:37 1 -> /dev/pts/0
lrwx------ 1 alanau alanau 64 Sep 24 20:37 2 -> /dev/pts/0
lrwx------ 1 alanau alanau 64 Sep 24 20:37 3 -> socket:[23182]
В приведенном выше примере, 3
это сокет интерес. Число после socket
является номером inode, 23182
в этом случае.
Теперь смотрите в файле /proc/net/tcp
найти этот инод:
$ cat /proc/net/tcp | grep 23182
2: 0F02000A:C43B 8EDC3AD8:0050 01 00000000:00000000 00:00000000 00000000 1000 0 **23182** 1 0000000000000000 23 0 0 10 -1
Первая линия /proc/net/tcp
говорит вам, что каждое поле представляет:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
Таким образом, в этом примере, удаленный адрес 8EDC3AD8:0050
. Это ip_addres: port_number в шестнадцатеричном и сетевом порядке. Если вы конвертируете это в десятичное число, это 216.58.220.142:80
.
Который говорит вам, что это на самом деле TCP-соединение с портом 80 google.com!
Если вы не нашли номер inode в /proc/net/tcp
, попробуйте другие протоколы в каталоге, возможно /proc/net/udp
.
Какая операционная система? – fuz
Является ли это Python или C? Почему добавили оба тега? – Olaf
Его процесс python работает в Linux. Обновлен вопрос. –