명령 줄에서 특정 "명령 줄"로 프로세스 종료


24

특정 명령 행으로 모든 프로세스를 종료하는 명령 행 유틸리티가 있습니까?

예를 들어 "-jar selenium-server.jar"를 포함하는 명령 행으로 "java.exe"라는 모든 프로세스를 종료하십시오. 이것은 프로세스 탐색기를 통해 가능합니다.


3
난 당신이 특정 명령 행이 포함 된 .EXE 프로세스를 죽이는 방법을 요구하고 아래 모두에게 답변을 생각하면 그냥 .EXE 프로세스를 종료하는 방법을 묻는이 arent으로, 잘못
admintech

2
Windows에 대해서만 이야기하고 있습니까? 귀하의 예와 제공된 답변을 마치 귀하가있는 것처럼 보이지만이를 지정하지 않았습니다.
Nathan Fellman

"프로세스 탐색기를 통해 이것이 어떻게 가능한지"설명 할 수 있습니까? 방금 java-jar <app-name>을 시작했으며 java.exe 만 표시합니다.
Sathyajith Bhat

나는 그가 "sysinternals process explorer"를 의미한다고 확신합니다
akira

물론 Sysinternals Process Explorer. 명령 행을 포함하여 프로세스 실행에 대한 많은 정보를 볼 수 있습니다.
ripper234

답변:


34

Windows XP에서는 WMI 콘솔 인 WMIC를 쉽게 사용할 수 있습니다 . 명령 propt에서 다음을 입력하십시오.

wmic Path win32_process Where "CommandLine Like '%-jar selenium-server.jar%'" Call Terminate

편집하다:

Aviator의 포트와 마찬가지로 별칭 ' process '를 전체 경로 ( ' path win32_process ')로 바꿨습니다 . 이 별명은 모든 OS에서 선언되지 않을 수 있습니다.


1
+20 그게 다야! 젠장 :) 나도 WMIC을 따르고 있었다. 그러나 WMIC 콘솔 내에서하고 있었으며 LIKE를 적용 할 수 없었습니다. 구문 오류가 발생하여 '='를 사용하게되어 전체 CommandLine 필드를 입력해야했습니다. LIKE가 WMIC 콘솔 외부에서 작동한다는 것을 알게되어 기쁩니다. 생각 했어야 했어 당신에게 Kudos
드워프

명령 줄에서 호출하면 완벽하게 작동합니다. TeamCity가 빌드가 끝날 때 프로세스를 시작해야합니다. 어떻게 든 TeamCity가 호출 한 동일한 명령 행이 "No Instance (s) Available"을 리턴하면 cmd에 복사 / 붙여 넣기와 같은 동일한 쉼표가 프로세스를 올바르게 종료시킵니다. 왜 그런 아이디어가 있습니까?
root

3
cmd 파일에 대한 간단한 팁-cmd 파일에서이 명령을 사용하려면 모든 '%'문자를 두 번째 '%'문자로 대체해야합니다. 예를 들어 ... CommandLIne Like '%%-jar ...
sarh

8

WMIC 명령이 포함 된 Windows 버전을 사용중인 경우 당신은 이것을 시도 할 수 있습니다

wmic path win32_process Where "Caption Like '%java.exe%' AND CommandLine Like '%selenium.jar%'" get ProcessId|more +1

more +1헤더를 포함하는 첫 번째 라인을 제거하고 단독 PID를 출력한다. selenium.jar을 포함하는 둘 이상의 Java 프로세스가있는 경우 줄당 하나의 PID를 리턴합니다.


3

Get-Process 및 StartInfo.Arguments를 사용하여 원하는 프로세스에서 PowerShell 로이 작업을 수행 할 수 있다고 생각합니다.

$procs = Get-Process java
foreach($proc in $procs) 
{
    if($proc.StartInfo.Arguments -contains "-jar selenium-server.jar")
    {
        kill $proc
    }
}

(나는 그것을 완전히 테스트하지는 않았지만 제대로 작동하도록 조정할 수 있어야합니다)


메모장으로 시도했지만 startinfo.arguments가 비어 있습니다.
js2010

3

Powershell의 간단한 단일 라이너 :

(Get-WmiObject win32_process -filter "Name='java.exe' AND CommandLine LIKE '%-jar selenium-server.jar%'").Terminate()

나는 언젠가 PS를 정말로 배워야한다.
ripper234

2

파워 쉘 :-

$oProcs = get-process explorer;foreach ($oProc in $oProcs){if ($oProc.Path.Contains('C:\Windows')) {Stop-Process $oProc.Id}}

1

Brain의 PowerShell 스크립트 변형을 사용합니다 .

명령 행 및 기타 정보도 출력됩니다.

$processes = Get-WmiObject Win32_Process -Filter "name = 'java.exe'"
foreach($proc in $processes)
{
    if($proc.CommandLine.Contains("selenium-server.jar"))
    {
        Write-Host "stopping proccess $($proc.ProcessId) with $($proc.ThreadCount) threads; $($proc.CommandLine.Substring(0, 50))..."
        Stop-Process -F $proc.ProcessId
    } else
    {
        Write-Host "skipping proccess $($proc.ProcessId) with $($proc.ThreadCount) threads; $($proc.CommandLine.Substring(0, 50))..."
    }
}

0

또 다른 파워 쉘 변형. 기본적으로 동일하고 입력하고 기억하기가 더 쉽습니다. -match는 실제로 정규 표현식을 사용할 수 있습니다.

get-wmiobject win32_process | where commandline -match selenium-server.jar 
  | remove-wmiobject

PS 명령과 다른 명령의 차이점을 설명해 주시겠습니까?
Burgi

기본적으로 동일합니다. 입력하고 기억하기가 더 쉬울 것입니다. -match는 실제로 정규 표현식을 사용할 수 있습니다.
js2010

당신은 그것을 포함하도록 답변을 편집 해야 합니다 ...
버기

-2

무료 PsKill을 사용하십시오 .

pskill java.exe


1
당신은 질문의 두 번째 부분을 놓쳤다 : "특정 명령 줄"... 첫 번째 java.exe가 아닙니다. 모든 java.exe 프로세스
akira
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.