НейроАгент

Как завершить процесс, использующий порт в Windows

Узнайте несколько методов для определения и завершения процессов, использующих определенные порты, такие как 8080, в Windows. Полное руководство с подходами через Командную строку, PowerShell и Диспетчер задач.

Вопрос

Как определить и завершить процесс, использующий конкретный порт на localhost в Windows? Например, как освободить порт 8080, когда он уже используется другим приложением?

НейроАгент

Чтобы идентифицировать и завершить процесс, использующий определенный порт, например 8080 на localhost в Windows, можно использовать несколько встроенных методов. Вот наиболее эффективные подходы:


Содержание


Использование командной строки с netstat

Традиционный метод использует команду netstat для поиска процесса, использующего определенный порт:

  1. Откройте командную строку (нажмите Win + R, введите cmd и нажмите Enter)

  2. Найдите процесс, использующий порт 8080:

    cmd
    netstat -ano | findstr :8080
    

    Эта команда покажет все подключения, связанные с портом 8080. Ищите строки, где локальный адрес показывает 0.0.0.0:8080 или 127.0.0.1:8080, а состояние — LISTENING. Последний столбец показывает PID (идентификатор процесса).

  3. Завершите процесс с помощью PID:

    cmd
    taskkill /PID [PID] /F
    

    Замените [PID] на фактический номер идентификатора процесса.

Примечание: Если taskkill вызывает проблемы в некоторых терминальных средах, таких как старые версии Git Bash, альтернативой может быть tskill, хотя он устарел в современных версиях Windows.


PowerShell предлагает более интегрированные и современные способы обработки сетевых подключений:

Метод 1: Get-NetTCPConnection

Для TCP-портов (включая 8080):

powershell
Get-NetTCPConnection -LocalPort 8080 | Select-Object LocalAddress, LocalPort, State, OwningProcess

Это дает вам идентификатор процесса (OwningProcess), использующего порт 8080.

Метод 2: С именами процессов

Чтобы получить как идентификатор процесса, так и его имя:

powershell
$port = 8080
$connections = Get-NetTCPConnection -LocalPort $port
$processInfo = $connections | ForEach-Object {
    $process = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
    [PSCustomObject]@{
        LocalPort = $_.LocalPort
        ProcessId = $_.OwningProcess
        ProcessName = $process?.ProcessName
        State = $_.State
    }
}
$processInfo | Format-Table

Метод 3: Однострочник для поиска и завершения

powershell
Stop-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess -Force

Этот метод напрямую находит процесс, использующий порт 8080, и завершает его.

Метод 4: Для UDP-портов

powershell
Get-NetUDPEndpoint -LocalPort 8080 | Select-Object LocalAddress, LocalPort, OwningProcess

Использование Диспетчера задач

Для графического подхода:

  1. Нажмите Ctrl + Shift + Esc, чтобы открыть Диспетчер задач
  2. Перейдите на вкладку “Сведения”
  3. Нажмите “Вид” → “Выбрать столбцы…”
  4. Поставьте галочку “PID”, чтобы видеть идентификаторы процессов
  5. Найдите процесс с помощью PID, полученного из netstat или PowerShell
  6. Щелкните правой кнопкой мыши по процессу и выберите “Завершить задачу”

Использование Монитора ресурсов

Для более детального просмотра:

  1. Нажмите Win + R, введите resmon и нажмите Enter
  2. Перейдите на вкладку “Сеть”
  3. Нажмите “TCP-подключения”
  4. Ищите порт (8080) в столбце “Локальный порт”
  5. Запишите PID и найдите соответствующий процесс

Альтернативные методы

Использование NPX (если установлен Node.js):

bash
npx kill-port 8080

Использование Process Explorer ( сторонний инструмент):

Скачайте Process Explorer с сайта Microsoft Sysinternals для расширенного мониторинга процессов и портов.


Полный пошаговый пример

Вот полный рабочий процесс для освобождения порта 8080:

Метод 1: Командная строка

cmd
# Шаг 1: Найдите процесс, использующий порт 8080
netstat -ano | findstr :8080

# Пример вывода:
# TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       12345

# Шаг 2: Завершите процесс (PID равен 12345)
taskkill /PID 12345 /F

Метод 2: PowerShell

powershell
# Шаг 1: Найдите процесс и отобразите информацию
Get-NetTCPConnection -LocalPort 8080 | Select-Object LocalAddress, LocalPort, State, OwningProcess

# Шаг 2: Завершите процесс
Stop-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess -Force -ErrorAction SilentlyContinue

Метод 3: PowerShell с именами процессов

powershell
# Найдите имя процесса, использующего порт 8080
$processId = (Get-NetTCPConnection -LocalPort 8080).OwningProcess
$processName = (Get-Process -Id $processId).ProcessName
Write-Host "Процесс '$processName' (PID: $processId) использует порт 8080"

# Завершите процесс
Stop-Process -Id $processId -Force

Важные замечания

  • Административные привилегии: некоторые операции могут требовать запуска командной строки или PowerShell от имени администратора
  • Несколько процессов: если несколько процессов используют один и тот же порт, вам нужно будет завершить каждый из них
  • Системные процессы: будьте осторожны при завершении системных процессов (например, PID 4 для системных процессов)
  • Доступность порта: после завершения процесса подождите немного перед попыткой привязки к порту снова
  • Версия PowerShell: Get-NetTCPConnection требует PowerShell 4.0+ (Windows 8.1/Server 2012 R2 и новее)

Эти методы помогут вам быстро идентифицировать и завершить любой процесс, использующий порт 8080 или любой другой порт в вашей системе Windows.

Источники

  1. How to Check Which Process Is Using Port 8080 - DZone
  2. 8080 is already in use – Peter’s Random Topic Library
  3. Checking Active TCP/IP Connections on Windows with PowerShell - Windows OS Hub
  4. How to check the active ports and processes on Windows with PowerShell - Askme4Tech
  5. Get-NetTCPConnection (NetTCPIP) - Microsoft Learn
  6. How to Kill the Process Using a Port on Localhost in Windows - Medium

Заключение

  • Метод с командной строкой быстрый и не требует знаний PowerShell
  • Методы PowerShell более мощные и предоставляют лучшую информацию о процессе
  • Диспетчер задач предлагает графический интерфейс для тех, кто предпочитает операции с мышью
  • Всегда будьте осторожны при завершении процессов, особенно системных
  • Для регулярного управления портами команды PowerShell являются наиболее эффективным подходом

Выберите метод, который лучше всего соответствует вашему уровню комфорта и конкретным требованиям. Для большинства пользователей Windows подход с PowerShell предлагает наилучший баланс простоты и функциональности.