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

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

netstat -a -o -n

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

taskkill /F /PID <pid>

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



답변

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을 모르면 입력하기가 더 빠르지 만 따르기가 더 어려워집니다.


답변

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

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

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

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


답변

사용할 수있는 편리한 기능은 다음과 같습니다.

https://github.com/majkinetor/posh/blob/master/MM_Network/Stop-ProcessByPort.ps1

killp 8081


답변