Komut satırından belirli bir “Komut Satırı” ile bir işlemi sonlandırın


24

Belirli bir komut satırıyla tüm işlemleri öldüren bir komut satırı yardımcı programı var mı?

Örneğin, "java.exe" adlı tüm işlemleri "-jar selenium-server.jar" içeren bir komut satırıyla öldür. Bu işlem gezgini ile mümkündür.


3
Aşağıdaki cevapların her ikisinin de yanlış olduğuna inanıyorum, sadece bir .exe işlemini nasıl öldüreceğinizi sormadığınız için, belirli bir komut satırı içeren bir .exe işlemini nasıl öldüreceğinizi soruyorsunuz
— admintech

2
Sadece Windows hakkında mı konuşuyorsun? Örnekleriniz ve verilen cevaplar sizin gibi görünmesini sağlar, ancak bunu belirtmediniz.
— Nathan Fellman

"Process Explorer aracılığıyla bunun nasıl mümkün olduğunu" açıklayabilir misiniz? Daha yeni bir java - jar <app-name> başlattım ve sadece java.exe'yi gösteriyor
— Sathyajith Bhat

Bahse girerim "sysinternals process explorer" anlamına geliyordu
— akira

Elbette Sysinternals İşlem Gezgini. Çalışan işlemler hakkında komut satırı da dahil olmak üzere birçok bilgiyi görüntüleyebilirsiniz.
— ripper234

Yanıtlar:


34

Windows XP'de, bunu kolayca WMI Konsolu olan WMIC ile yapabilirsiniz . Bir komut satırından aşağıdakini yazın:

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

Düzenle:

Ben takma adıyla 'yerini sürecini tam yolu (' tarafından ' yol win32_process Pilot limanı olduğu gibi'). Bu takma ad her işletim sisteminde bildirilmeyebilir.


1
+20 İşte bu! Kahretsin :) Ben de WMIC'i izliyordum. Ancak bunu WMIC konsolundan yapıyorum ve LIKE'ı uygulayamıyordum. Beni, beni CommandLine alanına girmeye zorlayan '=' kullanmaya zorlayan sözdizimi hataları alıyordu. LIKE'in WMIC konsolu dışında çalıştığını bilmek güzel. Bunu düşünmeliydim. Size Kudos
— Bir Cüce

komut satırından çağırdığımda mükemmel çalışıyor. TeamCity'ye yapı sonunda öldürmem gereken bir işlemi başlatıyorum. Her nasılsa, TeamCity tarafından çağrılan aynı komut satırı "Örnek Yok" döndürdüğünde, cmd'ye kopyalanan / yapıştırılan gibi aynı komut satırı işlemi doğru şekilde öldürür. Bunun neden olduğu hakkında bir fikrin var mı?
— Kök

3
Cmd dosyaları için sadece küçük bir ipucu - cmd dosyasındaki bu komutu kullanmak için kaçış tüm '%' karakterlerini ikinci bir '%' karakteri ile değiştirmelisiniz, örneğin ... CommandLIne Like '%% - jar ...
— sar

8

İçinde WMIC komutu olan bir Windows sürümü kullanıyorsanız. Bunu deneyebilirsin

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

more +1Üstbilgi içeren birinci çizgi ortadan kaldırır ve tek başına PID basar. Selenium.jar içeren birden fazla java işlemi varsa, bu satır başına bir PID döndürür.


3

İstediğiniz işlemde Get-Process ve StartInfo.Arguments kullanarak bunu PowerShell ile yapabileceğinizi düşünüyorum.

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

(Bunu tamamen test etmedim, ancak çalışmasını sağlamak için ince ayar yapmalısınız)


Not Defteri ile denedim, ancak startinfo.arguments boştu.
— js2010

3

Powershell'de basit bir astar:

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

Bir ara gerçekten PS öğrenmeliyim.
— ripper234

2

Güç kalkanı:-

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

1

Brain'in PowerShell betiğinin bir varyasyonunu kullanıyorum .

Bu komut satırı ve diğer bilgileri de verir.

$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

Başka bir powershell varyasyonu. Temelde aynı, yazmak ve hatırlamak belki de daha kolay. -Match aslında düzenli bir ifade alabilir.

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

PS komutunuzla burada diğerleri arasındaki farkı açıklar mısınız?
— Burgi

Temelde aynı. Yazması ve hatırlaması belki daha kolay. -Match aslında düzenli bir ifade alabilir.
— js2010

Sen gerektiğini düzenlemek olduğunu içerecek şekilde cevap ...
— Burgi

-2

Ücretsiz PsKill'i kullanın :

pskill java.exe


1
Sorunun 2. bölümünü kaçırdınız: "özel komut satırı" ... ilk java.exe değil, beraber geliyor .. hiçbiri java.exe işleminde değil
— akira
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.