Windows : 특정 포트에서 실행중인 프로세스를 가장 빠르게 종료하는 방법


11

나는이 과정을 여러 번 겪고있다. Windows 시스템에서 프로세스를 종료해야하며 포트를 알고 있습니다. 일반적으로 단계는 다음과 같습니다. 포트를보고 PID를 찾으십시오 (예 : 포트 8084) 포트에서 실행중인 프로세스를 나열하십시오.

netstat -a -o -n

그런 다음 다음 명령을 사용하여 해당 포트에서 프로세스를 종료하십시오.

taskkill /F /PID <pid>

Windows OS에서이 명령을 한 줄에 실행할 수있는 파이프 나 이와 유사한 것이 있습니까?


1
지금 정식 답변을 작성할 수는 없지만 findstr(Windows grep)를 살펴보십시오 . 예를 들면 다음과 같습니다 netstat -a -o -n | findstr "LISTENING" | findstr ":135".. 아마도 이것은 당신에게 한 걸음 더 가까이 다가 갈 것입니다.)
Der Hochstapler

@OliverSalzburg 2nd findstr: 주의해야 할 것은 로컬 또는 원격 포트 번호와 일치 할 수 있습니다. (Q가 어느 것을 지정하지 않는다는 것을 받아 들인다.)
Richard

답변:


10

Windows OS에서이 명령을 한 줄에 실행할 수있는 파이프 나 이와 유사한 것이 있습니까?

모두 cmd.exe하나의 명령에서 다른 및 PowerShell을 지원 파이프. PowerShell에서 (명령 줄에서 한 줄에 있거나 스크립트에서 줄 바꿈을 이스케이프하려면`를 사용해야 함) :

netstat -ano
 | select -skip 4 
 | % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} 
 | ? {$_.Fields[1] -match '15120$'}
 | % {taskkill /F /PID $_.Fields[4] }

어디:

  • Select -skip 4처음 네 개의 헤더 행을 건너 뜁니다. ( 객체 프로젝트와 같은 SQL SELECT를 수행 Select하는 Select-Object데 사용됩니다.
  • %파이프 라인의 Foreach-Object각 객체 ( $_) 에 대해 스크립트 블록을 수행하고 스크립트 블록 의 결과를 파이프 라인에 출력하는 축약 형입니다 . 여기에서는 먼저 입력을 필드 배열로 나누고 Original문자열 netstatFields배열이 만든 두 가지 속성으로 새로운 객체를 만듭니다 .
  • ?Where-Object스크립트 블록의 결과를 기반으로하는 필터의 줄임말입니다 . 두 번째 필드의 끝에 정규 표현식을 일치시킵니다 (모든 PowerShell 컨테이너는 0을 기준으로 함).

(마지막 요소를 제외한 모든 테스트 : 프로세스 종료를 시작하고 싶지 않습니다 :-)).

실제로, 예를 들어 이것을 단순화 할 것입니다. 첫 번째 foreach(헤더를 무시하도록 설계 됨) 에서 0 또는 PID 만 반환 하고 호출하기 전에 0이 아닌 값을 필터링합니다 taskkill. PowerShell을 모르면 입력하기가 더 빠르지 만 따르기가 더 어려워집니다.


어떤 이유로 내 powershell이 ​​선택을 인식하지 못합니다! Windows 7 "Der Befehl"선택 "을 실행하면 문제가 발생했습니다." "객체 선택"과 동일
Armand

이것은 나를 위해 일했지만 프로세스가 두 번 발견되었습니다 netstat. 이로 인해 (아마도 무해한) 오류가 발생 ERROR: The process "12345" not found.합니다.
Scott Weldon

여기서 중요한 테이크 아웃은 다음과 같습니다 taskkill /F /PID [PID]. 이를 통해 PID를 얻는 방법이있는 한 누군가가 수동으로 작업을 종료 할 수 있습니다.
Sawtaytoes

1

명령 프롬프트를 열고 다음을 실행하십시오.

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

.bat에서 수행하려면 % a%% a로 바꾸십시오 .

해당 포트에서 수신 대기중인 포트를 종료하려면 다른 포트의 끝에 추가하십시오 (^ | 찾기 "LISTENING").


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.