Есть ли утилита командной строки, которая убивает все процессы с определенной командной строкой?
Например, убить все процессы с именем «java.exe» с помощью командной строки, содержащей «-jar selenium-server.jar». Это возможно через Process Explorer.
Есть ли утилита командной строки, которая убивает все процессы с определенной командной строкой?
Например, убить все процессы с именем «java.exe» с помощью командной строки, содержащей «-jar selenium-server.jar». Это возможно через Process Explorer.
В Windows XP вы можете легко это сделать с помощью WMIC, консоли WMI . В командной строке введите следующее:
wmic Path win32_process Where "CommandLine Like '%-jar selenium-server.jar%'" Call Terminate
Редактировать:
Я заменил псевдоним ' process ' на полный путь (' путь win32_process '), как и порт Aviator. Этот псевдоним не может быть объявлен на каждой ОС.
Если вы используете версию Windows, в которой есть команда WMIC. Вы можете попробовать это
wmic path win32_process Where "Caption Like '%java.exe%' AND CommandLine Like '%selenium.jar%'" get ProcessId|more +1
Чем more +1 удаляет первую строку, содержащую заголовок и печатает только PID. Если существует более одного Java-процесса, содержащего selenium.jar, это вернет один PID на строку.
Я полагаю, что вы можете сделать это с PowerShell, используя Get-Process и StartInfo.Arguments для нужного вам процесса.
$procs = Get-Process java
foreach($proc in $procs)
{
if($proc.StartInfo.Arguments -contains "-jar selenium-server.jar")
{
kill $proc
}
}
(Я не проверял это полностью, но вы должны иметь возможность настроить его, чтобы он работал)
Простой однострочник в powershell:
(Get-WmiObject win32_process -filter "Name='java.exe' AND CommandLine LIKE '%-jar selenium-server.jar%'").Terminate()
Powershell:-
$oProcs = get-process explorer;foreach ($oProc in $oProcs){if ($oProc.Path.Contains('C:\Windows')) {Stop-Process $oProc.Id}}
Я использую вариацию скрипта 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))..."
}
}
Еще одна вариация PowerShell. Это в основном то же самое, возможно, легче напечатать и запомнить. -match может на самом деле принимать регулярное выражение.
get-wmiobject win32_process | where commandline -match selenium-server.jar
| remove-wmiobject
Используйте бесплатный PsKill:
pskill java.exe