コマンドラインから特定の「コマンドライン」でプロセスを強制終了する


24

特定のコマンドラインですべてのプロセスを強制終了するコマンドラインユーティリティはありますか?

たとえば、「-jar selenium-server.jar」を含むコマンドラインで「java.exe」という名前のすべてのプロセスを強制終了します。これはプロセスエクスプローラーで可能です。


3
私はあなたがちょうどあなたが特定のコマンドラインが含まれている.exeのプロセスを強制終了する方法を求めている、.exeのプロセスを強制終了する方法を求めてアレントとして以下の回答の両方が、間違っていると信じて
admintech

2
Windowsについてだけ話しているのですか?あなたの例と提供された答えはあなたのように見えますが、あなたはこれを指定しませんでした。
ネイサンフェルマン

「Process Explorerでこれがどのように可能か」を説明できますか?java-jar <app-name>を起動したところ、java.exeのみが表示される
Sathyajith Bhat

私は彼/彼女が「Sysinternalsのプロセスエクスプローラ」意味賭け
アキラ

もちろん、Sysinternals Process Explorer。コマンドラインなど、実行中のプロセスに関する多くの情報を表示できます。
ripper234

回答:


34

Windows XPでは、WMIC、WMIコンソールを使用してこれを簡単に行うことができます。コマンドプロパティから、次を入力します。

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

編集:

Aviatorのポートと同様に、エイリアス ' process 'をフルパス( ' path win32_process ')に置き換えました。このエイリアスは、すべてのOSで宣言されるとは限りません。


1
+20それだけです!Dammit :)私もWMICをフォローしていました。しかし、WMICコンソール内からそれを行っていたため、LIKEを適用できませんでした。構文エラーが発生し、「=」を使用せざるを得なくなり、コマンドラインフィールド全体を入力しなければならなくなりました。LIKEがWMICコンソールの外部で機能することを知って喜んでいます。そのことを考えるべきだった。あなたへの
ドワーフ

コマンドラインから呼び出すと完全に機能します。TeamCityがプロセスを開始しているので、ビルドの最後に終了する必要があります。どういうわけか、TeamCityによって呼び出された同じコマンドラインが "利用可能なインスタンスがありません"を返すと、cmdにコピー/貼り付けされたのと同じコンマがプロセスを正しく強制終了します。なぜそうなるのでしょうか?
ルート

3
2番目の「%」文字、例えば持つすべての「%」文字をエスケープ置き換える必要がCMDファイルからこのコマンドを使用するには...コマンドラインのように「%% - - CMDファイルのためのほんの少しの先端瓶...
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プロセスが複数ある場合、1行に1つの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


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

別のpowershellバリエーション。基本的には同じですが、おそらく入力と記憶が簡単です。-matchは実際には正規表現を使用できます。

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

PSコマンドと他のコマンドの違いをここで説明できますか?
ブルギ

基本的に同じです。おそらく入力と覚えが簡単です。-matchは実際には正規表現を使用できます。
js2010

回答を編集してそれを含める必要があります...
ブルギ

-2

無料のPsKillを使用します

pskill java.exe


1
質問の2番目の部分を見逃した:「特定のコマンドライン」...最初のjava.exeではなく、..すべてのjava.exeプロセスでもない
akira
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.