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.