ฆ่ากระบวนการด้วย“ Command Line” เฉพาะจากบรรทัดคำสั่ง


24

มีโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ฆ่ากระบวนการทั้งหมดด้วยบรรทัดคำสั่งเฉพาะหรือไม่

เช่นฆ่ากระบวนการทั้งหมดที่ชื่อ "java.exe" ด้วยบรรทัดคำสั่งที่มี "-jar selenium-server.jar" สิ่งนี้เป็นไปได้ผ่านกระบวนการสำรวจ


3
ผมเชื่อว่าคำตอบทั้งสองด้านล่างจะไม่ถูกต้องตามที่คุณ arent เพียงแค่ขอให้วิธีการฆ่ากระบวนการ .exe คุณจะถามถึงวิธีการฆ่ากระบวนการ .exe ซึ่งมีบรรทัดคำสั่งที่เฉพาะเจาะจง
admintech

2
คุณกำลังพูดถึง Windows เท่านั้น ตัวอย่างและคำตอบที่ให้มาทำให้ดูเหมือนว่าคุณเป็น แต่คุณไม่ได้ระบุสิ่งนี้
นาธาน Fellman

คุณช่วยอธิบาย "สิ่งนี้เป็นไปได้อย่างไรผ่าน Process Explorer" ฉันเพิ่งเปิดตัวจาวา - jar <app-name> และมันจะแสดงเฉพาะ
จาวาสคริปต์

ฉันเดิมพันเขา / เธอหมายถึง "Sysinternals Process Explorer"
อากิระ

แน่นอนว่า Sysinternals Process Explorer คุณสามารถดูข้อมูลมากมายเกี่ยวกับการเรียกใช้กระบวนการจากมันรวมถึงบรรทัดคำสั่งของพวกเขา
ripper234

คำตอบ:


34

ใน Windows XP คุณสามารถทำได้อย่างง่ายดายด้วย uing WMIC นั่นคือคอนโซลWMI จากพรอมต์คำสั่งพิมพ์ต่อไปนี้:

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

แก้ไข:

ฉันแทนที่ ' กระบวนการ ' ชื่อแทนโดยเส้นทางแบบเต็ม (' เส้นทาง win32_process ') เนื่องจากเป็นพอร์ตของนักบิน นามแฝงนี้อาจไม่ถูกประกาศในทุกระบบปฏิบัติการ


1
+20 นั่นแหล่ะ! Dammit :) ฉันก็กำลังติดตาม WMIC เช่นกัน แต่ฉันทำมันจากภายในคอนโซล WMIC และไม่สามารถใช้ LIKE ได้ ได้รับข้อผิดพลาดทางไวยากรณ์ซึ่งบังคับให้ฉันใช้ '=' ซึ่งทำให้ฉันต้องป้อนฟิลด์ CommandLine ทั้งหมด ดีใจที่รู้ว่า LIKE ทำงานได้นอกคอนโซล WMIC ควรมีความคิดว่า ขอชื่นชมคุณ
คนแคระ

ทำงานได้อย่างสมบูรณ์แบบเมื่อฉันเรียกมันจากบรรทัดคำสั่ง ฉันมี TeamCity ที่เริ่มกระบวนการซึ่งฉันต้องฆ่าเมื่อสิ้นสุดการสร้าง อย่างใดเมื่อบรรทัดคำสั่งเดียวกันที่เรียกโดย TeamCity จะส่งกลับ "ไม่มีอินสแตนซ์" พร้อมใช้งานคอมม่าเดียวกันเช่นคัดลอก / วางเพื่อ cmd ฆ่ากระบวนการอย่างถูกต้อง ความคิดใด ๆ ที่เป็นเช่นนั้น
รูต

3
เพียงเคล็ดลับเล็กน้อยสำหรับไฟล์ cmd - หากต้องการใช้คำสั่งนี้จากไฟล์ cmd คุณควรแทนที่ตัวอักษร '%' ทั้งหมดด้วยตัวอักษร '%' ตัวที่สองเช่น ... CommandLIne Like '%% - jar ...
sarh

8

หากคุณใช้เวอร์ชั่น Windows ซึ่งมีคำสั่ง WMIC อยู่ คุณสามารถลองสิ่งนี้

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

more +1เอาบรรทัดแรกที่มีส่วนหัวและพิมพ์หมายเลขผลิตภัณฑ์เพียงอย่างเดียว หากมีกระบวนการจาวามากกว่าหนึ่งกระบวนการที่มี selenium.jar สิ่งนี้จะส่งคืน PID หนึ่งรายการต่อบรรทัด


3

ฉันเชื่อว่าคุณสามารถทำได้ด้วย PowerShell โดยใช้ Get-Process และ StartInfo.Arguments เกี่ยวกับกระบวนการที่คุณต้องการ

$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

ฉันจะใช้รูปแบบของสคริปต์ 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

การเปลี่ยนแปลงที่แตกต่างกันอื่น โดยทั่วไปแล้วอาจจะพิมพ์และจดจำได้ง่ายกว่า - การจับคู่สามารถใช้การแสดงออกปกติ

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

คุณช่วยอธิบายความแตกต่างระหว่างคำสั่ง PS ของคุณกับคนอื่น ๆ ได้ไหม?
Burgi

มันเป็นพื้นเดียวกัน พิมพ์และจดจำได้ง่ายขึ้น - การจับคู่สามารถใช้การแสดงออกปกติ
js2010

คุณควรแก้ไขคำตอบของคุณเพื่อรวม ...
Burgi

-2

ใช้PsKillฟรี:

pskill java.exe


1
คุณพลาดส่วนที่ 2 ของคำถาม: "commandline เฉพาะ" ... ไม่ได้ java.exe แรกที่มาพร้อม .. ค่าทุกกระบวนการ java.exe
akira
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.