Как узнать номер порта с помощью идентификатора процесса (PID): удобное руководство для разработчиков

В мире сетевого программирования и устранения неполадок бывают случаи, когда вам необходимо определить номер порта, связанный с конкретным процессом, запущенным в вашей системе. Эта информация может оказаться неоценимой для таких задач, как отладка, мониторинг сетевых подключений или даже защита вашей сети. В этой статье мы рассмотрим несколько методов поиска номера порта по идентификатору процесса (PID) и попутно предоставим вам примеры кода. Итак, приступим!

Метод 1: использование команды Netstat
Один из самых простых и наиболее широко используемых методов — использование инструмента командной строки netstat. Откройте терминал или командную строку и выполните следующую команду:

netstat -ano | findstr :<PID>

Замените <PID>фактическим идентификатором процесса, который вы хотите изучить. Эта команда отобразит активные сетевые подключения и связанные порты. Найдите строку, соответствующую вашему PID, и вы найдете номер порта.

Метод 2: анализ файлов процедур (Unix-подобные системы)
В Unix-подобных системах вы можете использовать файловую систему /procдля доступа к информации о процессах. Каждому запущенному процессу соответствует каталог /proc, в качестве имени каталога которого указан его идентификатор процесса. Внутри этого каталога вы можете найти файл с именем net, который содержит информацию о сети. Вот фрагмент кода Python для извлечения номера порта:

import os
def get_port_by_pid(pid):
    try:
        with open(f"/proc/{pid}/net") as net_file:
            for line in net_file:
                fields = line.split()
                if fields[9] == "01":
                    return int(fields[1].split(":")[1], 16)
    except FileNotFoundError:
        return None
# Usage:
pid = 1234  # Replace with your desired PID
port = get_port_by_pid(pid)
if port is not None:
    print(f"The port associated with PID {pid} is: {port}")
else:
    print(f"No port found for PID {pid}")

Метод 3: использование PowerShell (Windows)
Если вы используете систему Windows, вы можете использовать PowerShell для поиска номера порта по PID. Откройте PowerShell и выполните следующую команду:

Get-NetTCPConnection -OwningProcess <PID> | Select-Object -ExpandProperty LocalPort

Замените <PID>идентификатором процесса, который вы хотите изучить. Эта команда получит TCP-соединения, связанные с данным PID, и отобразит соответствующие номера портов.

В этой статье мы рассмотрели различные методы поиска номера порта по идентификатору процесса (PID). Мы рассмотрели команду netstat, анализ файлов /procв Unix-подобных системах и использование PowerShell в Windows. В зависимости от вашей операционной системы и предпочтений вы можете выбрать метод, который подходит вам лучше всего. Вооружившись этими методами, вы будете хорошо подготовлены к устранению неполадок в сети, мониторингу соединений или повышению сетевой безопасности. Приятного кодирования!