source

Windows에서 현재 localhost의 포트를 사용하고 있는 프로세스를 중지하려면 어떻게 해야 합니까?

ittop 2023. 4. 27. 22:45
반응형

Windows에서 현재 localhost의 포트를 사용하고 있는 프로세스를 중지하려면 어떻게 해야 합니까?

포트에 이미 할당된 현재 프로세스/응용 프로그램을 제거하려면 어떻게 해야 합니까?

예:localhost:8080

1단계:

cmd.exe를 열고(참고: 관리자로 실행해야 할 수도 있지만 항상 필요한 것은 아닙니다) 다음 명령을 실행합니다.

netstat -ano | findstr :<PORT>

(바꾸기)<PORT>원하는 포트 번호를 사용하되 콜론은 유지합니다.)

빨간색으로 동그라미를 친 영역은 PID(프로세스 식별자)를 나타냅니다.원하는 포트를 사용 중인 프로세스의 PID를 찾습니다.

2단계:

그런 다음 다음 명령을 실행합니다.

taskkill /PID <PID> /F

(이번에는 콜론 없음)

마지막으로 "Step 1"에서 명령어를 다시 실행하면 작업 성공 여부를 확인할 수 있습니다.성공한 경우 해당 포트 번호에 대한 검색 결과를 더 이상 볼 수 없습니다.

저는 그것이 정말 오래된 질문이라는 것을 알지만, 기억하기가 꽤 쉽다는 것을 발견했습니다. 포트를 사용하는 앱을 죽이는 빠른 명령입니다.

요구 사항: npm@5.2.0^ 버전

npx kill-port 8080

킬포트에 대한 자세한 내용은 여기에서 확인할 수 있습니다. https://www.npmjs.com/package/kill-port

두 가지 방법으로 프로세스를 종료할 수 있습니다.

01 - 쉬운 01 - 가하고쉬운단장쉬▁-운고▁option션▁01

: : npm@5.2.0^ 버전

와 합니다.

npx kill-port 8080

옵션 02 - 가장 일반적으로 사용됨

  • 0101계

    명령 .Windows 명령
  • 0202계

    다음 명령을 사용하여 중지할 포트의 PID를 찾습니다.여기 포트는 8080입니다.
netstat -ano|findstr "PID :8080"

TCP 0.0.0.0:80800 0.0.0.0:0 LISTENING 18264

  • 0303(으)로 설정

    로 죽입니다.
taskkill /PID 18264 /f

1단계(카빈두 위제가 작성한 수락된 답변에서도 동일):

netstat -ano | findstr :yourPortNumber

2단계에서 다음으로 변경:

tskill typeyourPIDhere 

참고:taskkill에서 작동하지 않습니다. Gitbash 파일을 참조하십시오.

Windows 10/11 기본 도구의 경우:

1단계:

관리자로 Windows PowerShell 열기

2단계:

프로세스 찾기포트 8080의 ID:

netstat -aon | findstr 8080

TCP 0.0.0.0:80800 0.0.0.0:0 LISTEN 7777

3단계:

좀비 프로세스 제거:

taskkill /f /pid 77777

여기서 "77777"은 프로세스입니다.ID(PID라고도 함)

GitBash를 사용하는 경우

1단계:

netstat -ano | findstr :8080

2단계:

taskkill /PID typeyourPIDhere /F 

(/F강제로 프로세스를 종료합니다.)

내가 기억하는 가장 간단한 해결책은 다음과 같습니다.

Windows Powershell에서

포트 8080에서 프로세스를 중지하려고 합니다.

  1. 프로세스 가져오기:
netstat -ano | findstr :8080
  1. 프로세스 중지
stop-process 82932

이미 포트 번호를 알고 있는 경우 프로세스(SIGTERM)에 소프트웨어 종료 신호를 보내는 것으로 충분합니다.

kill $(lsof -t -i :PORT_NUMBER)

단순한 CMD가 도움이 됩니다.기억하기 쉬운

제거할 포트 번호를 찾아 아래 cmd를 실행합니다.

npx kill-port 8080

완료 후 포트가 중지되고 이 메시지가 표시됩니다.

npx: installed 3 in 13.796s
Process on port 8080 killed

명령줄에서 사용하는 경우:

for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a

bat-file에서 사용할 경우:

for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a

Windows PowerShell 버전 1 이상에서 포트 3000의 프로세스를 중지하려면 다음을 입력합니다.

Stop-Process(, (netstat -ano | findstr : 3000).split() | 각 {$[$length-1]}에 대해 - 강제


@morganpdx가 제안한 것처럼 PowerShell과 같은 더 나은 버전이 있습니다.

Stop-Process -Id(Get-NetTCPConnection - LocalPort 3000).소유 프로세스 - 강제

명령 프롬프트를 열고 아래 명령을 실행합니다.

netstat -ano|findstr "PID :8888"

출력에 포트를 점유하고 있는 프로세스 ID가 표시됩니다.

여기에 이미지 설명 입력

PID를 제거하기 위한 아래 명령 발행

taskkill /pid 8912 /f

아래와 같이 출력을 받으실 수 있습니다.

SUCCESS: The process with PID 8860 has been terminated.

Windows에서 PowerShell을 사용할 수 있는 경우 필요한 작업은 다음과 같습니다.

Get-Process -Id (Get-NetTCPConnection -LocalPort "8080").OwningProcess | Stop-Process

Windows 사용자의 경우 CurrPorts 도구를 사용하여 사용 중인 포트를 쉽게 제거할 수 있습니다.

여기에 이미지 설명 입력

Windows에서 사육사를 실행하고 있었는데 zookeeper-stop.sh 을 사용하여 2181 포트에서 실행 중인 동물원 사육사를 중지할 수 없었기 때문에 이 이중 슬래시 "/" 방법을 사용하여 태스크킬을 시도했습니다.효과가 있었습니다

     1. netstat -ano | findstr :2181
       TCP    0.0.0.0:2181           0.0.0.0:0              LISTENING       8876
       TCP    [::]:2181              [::]:0                 LISTENING       8876

     2.taskkill //PID 8876 //F
       SUCCESS: The process with PID 8876 has been terminated.

자동화합시다!

저처럼 이 문제가 자주 발생한다면 .bat 파일을 만들어 엔드 투 프로세스로 실행하십시오.

bat 파일 "killport.bat"을 생성

set /P port="Enter port : "
echo showing process running with port %port%

netstat -ano|findstr "PID :%port%"

set /P pid="Enter PID to kill : "

taskkill /pid %pid% /f

set /P exit="Press any key to exit..."

이 파일을 두 번 클릭하여 실행합니다.

  1. 포트 번호를 입력합니다(그러면 PID로 프로세스를 나열합니다).
  2. 죽일 PID 입력

다 했어요.

(선택사항)

어디서나 이 파일에 액세스할 수 있도록 경로 환경으로 설정합니다.

아마도 새로운 경로를 env에 추가하는 방법을 알게 될 것입니다.하지만 그렇지 않다면 다음과 같습니다.

4단계 중 1단계

시작 메뉴에서 ENV 검색

여기에 이미지 설명 입력

2단계/4단계

환경 변수 선택

여기에 이미지 설명 입력

3단계/4단계

'경로'를 선택하고 편집 버튼을 클릭합니다.

여기에 이미지 설명 입력

4/4단계

'New'를 클릭하여 .bat 파일이 저장된 경로를 추가합니다.'에 저장한 이후로.../Documents/bats' 폴더 이 경로를 추가합니다.이 파일을 저장하는 위치에 따라 경로가 달라집니다.

여기에 이미지 설명 입력

CMD를 열고 테스트합니다.파일 이름은 이 파일을 실행하는 단어입니다..bat 파일을 'killport.bat'로 저장했기 때문에 => 'killport'는 실행하는 단어입니다.

여기에 이미지 설명 입력 만약 즐긴다면요!그렇지 않으면 여기서 어떻게 했는지 공유합니다.

cmd를 관리자로 실행합니다.그러면 거기에 이 코드를 입력하세요.

netstat -ano | findstr :<8080>

그러면 포트에서 PID가 실행되는 것을 볼 수 있습니다.그런 다음 해당 PID 번호를 복사합니다. (PID는 하드웨어 제품 또는 등록된 소프트웨어 제품을 식별하는 데 도움이 되는 고유 번호입니다.)그리고 아래 코드 라인을 입력하고 Enter 키를 누릅니다.

taskkill /PID <Enter the copied PID Number> /F

Windows Terminal을 사용하는 경우 죽이는 과정이 조금 덜 지루할 수 있습니다.윈도우 단말기를 사용해봤는데,kill PID새 윈도우즈 터미널이 특정 bash 명령을 지원하므로 포트의 프로세스를 종료하는 데 문제가 없습니다. 예:kill 13300

그래서, 전체적인 과정은 다음과 같이 될 것입니다.

  • Windows 터미널 열기
  • 다음 명령을 입력하여 프로세스를 종료하려는 포트에서 실행 중인 프로세스를 표시합니다. netstat -ano | findstr :PORT
  • 프로세스를 종료하려면 다음을 입력합니다. kill PID

예:

PS C:\Users\username> netstat -ano | findstr :4445
  TCP    0.0.0.0:4445           0.0.0.0:0              LISTENING       7368
  TCP    [::]:4445              [::]:0                 LISTENING       7368
PS C:\Users\username> kill 7368
PS C:\Users\username> netstat -ano | findstr :4445
PS C:\Users\username>

포트에서 프로세스를 나열하는 첫 번째 명령을 입력했을 때 빈 상태로 반환되었습니다.이제 모든 과정이 사라졌다는 뜻입니다.

kill는 Stop-Process의 별칭입니다.@FSKur님, 알려주셔서 감사합니다.

만약 당신이 파워셸 7+를 사용한다면 이것은 나에게 효과가 있었습니다.$PROFILE 파일에 이 기능을 추가하기만 하면 됩니다.

function killport([parameter(mandatory)] [string] $uport){
    if($upid = (Get-NetTCPConnection -LocalPort $uport -ErrorAction Ignore).OwningProcess){kill $upid}
}

그런 다음 간단히 사용합니다.killport 8080

또는 명령어만 원하는 경우 다음을 시도할 수 있습니다.

kill $(Get-NetTCPConnection -LocalPort 8761 -ErrorAction Ignore).OwningProcess

bat 파일을 실행하여 할 수 있습니다.

@ECHO OFF                                                                              
FOR /F "tokens=5" %%T IN ('netstat -a -n -o ^| findstr "9797" ') DO (
SET /A ProcessId=%%T) &GOTO SkipLine                                                   
:SkipLine                                                                              
echo ProcessId to kill = %ProcessId%
taskkill /f /pid %ProcessId%
PAUSE

Python을 사용하여 수행하려는 경우: 8080과 같이 특정 포트에서 수신 중인 프로세스를 Python에서 킬할 수 있습니까?를 선택합니다.

Smunk의 답변은 잘 작동합니다.그의 코드를 반복합니다.

from psutil import process_iter
from signal import SIGTERM # or SIGKILL

for proc in process_iter():
    for conns in proc.connections(kind='inet'):
        if conns.laddr.port == 8080:
            proc.send_signal(SIGTERM) # or SIGKILL
            continue

첫걸음

netstat -vanp tcp | grep 8888

tcp4     0      0    127.0.0.1.8888   *.*    LISTEN      131072 131072  76061    0
tcp46    0      0    *.8888           *.*    LISTEN      131072 131072  50523    0

두 번째 단계: PID를 찾아서 제거합니다.

나의 경우에는

sudo kill -9 76061 50523
netstat -ano | findstr :PORT
kill PI

GitBash를 사용한 한 줄 솔루션:

 tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`

8080을 서버가 수신 중인 포트로 대체합니다.

자주 사용해야 하는 경우에는 다음에 추가해 보십시오.~/.bashrc함수:

function killport() {
        tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`
}

그리고 간단히 실행합니다.

killport 8080

저는 이것을 위해 작은 노드 js 스크립트를 작성했습니다.다음과 같이 실행합니다.node killPort.js 8080아니면 당신이 죽여야 할 항구가 무엇이든.다음을 에 저장합니다.killPort.js파일:

const { exec } = require('child_process');
const fs = require(`fs`);

const port = process.argv.length > 2 ? process.argv[2] : ``;
if (!port || isNaN(port)) console.log(`port is required as an argument and has to be a number`);
else {
    exec(`netstat -ano | findstr :${port}`, (err, stdout, stderr) => {
        if (!stdout) console.log(`nobody listens on port ${port}`);
        else {
            const res = stdout.split(`\n`).map(s => s.trim());
            const pid = res.map(s => s.split(` `).pop()).filter(s => s).pop();
            console.log(`Listener of ${port} is found, its pid is ${pid}, killing it...`);
            exec(`taskkill /PID ${pid} /F`, (err, stdout, stderr) => {
                if (!stdout) console.log(`we tried to kill it, but not sure about the result, please run me again`);
                else console.log(stdout);
            })
        }
    });
}

GitBash를 사용하고 있는데 실행 시 아래와 같은 오류가 발생합니다.

태스크킬 //PID XXXX

오류: PID 7420을 사용하는 프로세스를 종료할 수 없습니다.이유:이 프로세스는 /F 옵션이 있는 경우에만 강제로 종료할 수 있습니다.

그래서 //F는 아래와 같이 사용되었고 잘 작동했습니다.

태스크킬 //F //PID XXXX

WSL2에서 실행할 스크립트는 다음과 같습니다.

PIDS=$(cmd.exe /c netstat -ano | cmd.exe /c findstr :$1 | awk '{print $5}')
for pid in $PIDS
do
    cmd.exe /c taskkill /PID $pid /F
done

다음 명령을 사용하여 IIS를 간단히 다시 시작하여 이 문제를 방지할 수 있습니다.

IISRESET

언급URL : https://stackoverflow.com/questions/39632667/how-do-i-kill-the-process-currently-using-a-port-on-localhost-in-windows

반응형