कमांड लाइन से एक विशिष्ट "कमांड लाइन" के साथ एक प्रक्रिया को मार डालो


22

क्या एक कमांड लाइन उपयोगिता है जो एक विशिष्ट कमांड लाइन के साथ सभी प्रक्रियाओं को मारती है?

जैसे "java.exe" नामक सभी प्रक्रियाओं को एक कमांड लाइन के साथ मारें, जिसमें "-jar selenium-server.jar" शामिल है। यह प्रक्रिया एक्सप्लोरर के माध्यम से संभव है।


3
मेरा मानना ​​है कि नीचे दिए गए दोनों उत्तर गलत हैं, क्योंकि आप सिर्फ एक .exe प्रक्रिया को मारने के लिए नहीं पूछ रहे हैं, आप पूछ रहे हैं कि एक .exe प्रक्रिया को कैसे मारना है जिसमें एक विशिष्ट कमांड लाइन है।
admintech

2
क्या आप केवल विंडोज के बारे में बात कर रहे हैं? आपके उदाहरण और आपूर्ति किए गए उत्तर आपको ऐसा लगता है जैसे आप हैं, लेकिन आपने इसे निर्दिष्ट नहीं किया।
Nathan Fellman

क्या आप समझा सकते हैं "प्रोसेस एक्सप्लोरर के माध्यम से यह कैसे संभव है?" मैंने अभी एक java - jar & lt; app-name & gt; और यह केवल java.exe दिखाता है
Sathyajith Bhat

मुझे यकीन है कि वह "sysinternals प्रक्रिया खोजकर्ता" था
akira

Sysinternals प्रोसेस एक्सप्लोरर, निश्चित रूप से। आप इसकी कमांड लाइन सहित, इससे चलने वाली प्रक्रियाओं के बारे में अधिक जानकारी देख सकते हैं।
ripper234

जवाबों:


32

Windows XP में, आप WMIC, the का उपयोग करके यह आसानी से कर सकते हैं WMI कंसोल। कमांड प्रॉम्प्ट से, निम्न टाइप करें:

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

संपादित करें:

मैंने उपनाम बदल दिया ' प्रक्रिया 'इसके द्वारा पूर्ण पथ (' पथ win32_process ') के रूप में एविएटर पोर्ट है। यह उपनाम प्रत्येक OS पर घोषित नहीं किया जा सकता है।


1
+20 यह बात है! डैमिट :) मैं भी WMIC का अनुसरण कर रहा था। लेकिन मैं WMIC कंसोल के भीतर से कर रहा था और LIKE लागू नहीं कर पा रहा था। वाक्यविन्यास त्रुटियां हो रही थीं, जो मुझे '=' का उपयोग करने के लिए मजबूर कर रही थीं, जिसने मुझे पूरे कमांडलाइन क्षेत्र में इनपुट करने के लिए मजबूर किया। खुशी जानिए कि WMIC कंसोल के बाहर LIKE काम करता है। ऐसा सोचना चाहिए था। आप के लिए यश
A Dwarf

पूरी तरह से काम करता है जब मैं इसे कमांड लाइन से कहता हूं। मेरे पास एक टीम शुरू करने की प्रक्रिया है जिसे मुझे निर्माण के अंत में मारने की आवश्यकता है। किसी तरह जब वही कमांड लाइन जिसे टीमकिटी द्वारा बुलाया जाता है, वह "नो इंस्टेंस (एस) उपलब्ध" लौटाती है, वही कॉमाड जैसे कि कॉपी / पेस्ट करने के लिए cmd प्रक्रिया को सही ढंग से मारता है। किसी भी विचार क्यों होगा?
root

3
Cmd फ़ाइलों के लिए बस एक छोटी सी टिप - cmd फ़ाइल से इस कमांड का उपयोग करने के लिए आपको सभी '%' वर्णों को दूसरे '%' char के साथ बदलना चाहिए, उदा। ... कमांड लाइक '%% - जार ...
sarh

8

यदि आप एक Windows संस्करण का उपयोग कर रहे हैं जिसमें WMIC कमांड है। आप यह कोशिश कर सकते हैं

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

more +1 हेडर युक्त पहली लाइन को हटाता है और अकेले पीआईडी ​​प्रिंट करता है। यदि सेलेनियम.जर युक्त एक से अधिक जावा प्रक्रियाएं हैं तो यह प्रति पंक्ति एक पीआईडी ​​लौटाएगा।


3

मेरा मानना ​​है कि आप पॉवरशेल के साथ गेट-प्रोसेस और 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

सरल एक लाइनर में शंख:

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

मुझे सच में कभी-कभी PS सीखना चाहिए।
ripper234

2

शक्ति कोशिका:-

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

1

मैं की एक विविधता का उपयोग करें ब्रेन की पॉवरशेल स्क्रिप्ट

यह कमांड लाइन और अन्य जानकारी को भी आउटपुट करता है।

$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

क्या आप अपने पीएस कमांड और अन्य लोगों के बीच अंतर बता सकते हैं?
Burgi

यह मूल रूप से एक ही है। शायद टाइप करना और याद रखना आसान है। -मैच वास्तव में एक नियमित अभिव्यक्ति ले सकता है।
js2010

तुम्हे करना चाहिए संपादित करें आपके उत्तर को शामिल करने के लिए ...
Burgi

-2

मुफ्त का उपयोग करें PsKill :

pskill java.exe


1
आपने प्रश्न का दूसरा भाग याद किया: "विशिष्ट कमांडलाइन" ... पहला java.exe नहीं, जो साथ आता है .. न ही सभी java.exe प्रक्रियाएँ
akira
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.