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에서 프로세스를 중지하려고 합니다.
- 프로세스 가져오기:
netstat -ano | findstr :8080
- 프로세스 중지
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..."
이 파일을 두 번 클릭하여 실행합니다.
- 포트 번호를 입력합니다(그러면 PID로 프로세스를 나열합니다).
- 죽일 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
'source' 카테고리의 다른 글
셸 스크립트의 연관 배열 (0) | 2023.04.27 |
---|---|
전체 웹 작업 로그를 활성화하는 방법 Azure (0) | 2023.04.27 |
엑셀에서 값을 범위로 제한하려면 어떻게 해야 합니까? (0) | 2023.04.27 |
SQL Server에서 varchar(MAX) 대 TEXT 사용 (0) | 2023.04.27 |
Angular의 canLoad와 canActivated의 차이는 무엇입니까? (0) | 2023.04.27 |