2010-04-15 12 views
18

मैं cmd ​​में नौसिखिया हूं, इसलिए कृपया मुझे एक बेवकूफ सवाल पूछने की अनुमति दें: हम Windows cmd के माध्यम से चल रहे जावा प्रक्रिया को कैसे रोक सकते हैं?हम Windows cmd के माध्यम से चल रहे जावा प्रक्रिया को कैसे रोक सकते हैं?

उदाहरण के लिए, अगर हम निम्न आदेश के साथ घाट (एक मिनी वेब सर्वर) शुरू:

start javaw -jar start.jar 

कैसे हम इस प्रक्रिया को खोजने और इसे बाद में रोक सकता हूं?

जाहिर निम्न आदेश काम नहीं करता है:

stop javaw -jar start.jar 
+4

आप का प्रयास किया था 'Ctrl + C' या' Ctrl + Break'? –

+0

हां, लेकिन क्या मैं Ctrl + C या Ctrl + Break के साथ इसे रोकने के लिए .bat फ़ाइल बना सकता हूं? –

+2

शायद टास्ककिल कमांड की जांच करें। प्रक्रिया को चुनने के लिए इसमें कई विकल्प हैं: प्रक्रिया आईडी द्वारा, उपयोगकर्ता के मालिक द्वारा नाम पैटर्न द्वारा, लेकिन मैं पहले विशिष्ट अनुप्रयोग को बंद करने के मानक, कम हिंसक तरीके की तलाश करने की अनुशंसा करता हूं (सर्वर आमतौर पर किसी प्रकार का होता है "स्टॉप" कमांड का) –

उत्तर

9

यह बल्कि गन्दा है, लेकिन आप निम्नलिखित की तरह कुछ करने की जरूरत है:

START "do something window" dir 
FOR /F "tokens=2" %I in ('TASKLIST /NH /FI "WINDOWTITLE eq do something window"') DO SET PID=%I 
ECHO %PID% 
TASKKILL /PID %PID% 

this page पर इस मिले।

(बात इस तरह की बहुत आसान है यदि आप एक Unix/Linux सिस्टम है है ... या यदि आप Cygwin या विंडोज पर समान चलाते हैं।)

+0

पावरशेल भी यह मामूली बनाता है। – Joey

+1

यदि आप * सभी * java.exe प्रक्रियाओं को मारना चाहते हैं: 'टास्ककिल/एफ/आईएम java.exe/T'। इस प्रकार कहा, 'फोर' लूप के लिए धन्यवाद मैंने कहीं और उपयोग किया :) – Benj

8

आम तौर पर मुझे लगता है कि कई जावा खुला प्रक्रियाओं तो नहीं है

taskkill /im javaw.exe 

या

taskkill /im java.exe 

पर्याप्त होना चाहिए। यह सभी जावा के उदाहरणों को मार देगा, हालांकि।

+2

'टास्ककिल/एफ/आईएम java.exe' मेरे मामले में। आपके उत्तर के लिए धन्यवाद! – lordmegamax

2
FOR /F "tokens=1,2 delims= " %%G IN ('jps -l') DO IF %%H==name.for.the.application.main.Class taskkill /F /PID %%G 

name.for.the.application.main.Class - अपने आवेदन के मुख्य वर्ग के लिए इस की जगह (आप इसे jps -l उत्पादन के दूसरे कॉलम में पा सकते हैं)

28

जब मैं javaw.exe प्रक्रिया यह कह सकते हैं कि इसे समाप्त किया था को रोकने के लिए taskkill भाग गया लेकिन चल रहा है। Jqs प्रक्रिया (जावा qucikstart) भी रोका जाना चाहिए। इस बैच फ़ाइल को चलाने से इस मुद्दे का ख्याल रखा गया।

taskkill /f /im jqs.exe 
taskkill /f /im javaw.exe 
taskkill /f /im java.exe 
20

मुझे यह पसंद है।

wmic process where "name like '%java%'" delete 

आप वास्तव में एक दूरस्थ मशीन पर एक प्रक्रिया को मार सकते हैं।

wmic /node:computername /user:adminuser /password:password process where "name like '%java%'" delete 

wmic शानदार है!

+0

अच्छी तरह से काम करता है, लेकिन मैं इसे बैच फ़ाइल में कैसे काम कर सकता हूं? – Xerus

+0

@ एक्सरस सिंटैक्स एक जैसा होना चाहिए। एकमात्र अंतर जो मैं सोच सकता हूं, आपको 'कहां' खंड में प्रतिशत संकेतों को दोगुना करने की आवश्यकता हो सकती है: 'जहां "%% java %%' नाम 'जैसे' शब्दकोष प्रतिशत संकेतों को WQL वाइल्डकार्ड के रूप में निर्दिष्ट करने के लिए, तो आपका बैच स्क्रिप्ट बैच वैरिएबल के रूप में '% java%' को विस्तारित करने का प्रयास नहीं करेगा। – rojo

+0

@ एक्सरस आपको शायद एक नया प्रश्न पोस्ट करना चाहिए और संदर्भ में क्या चल रहा है यह दिखाना चाहिए। – rojo

1

शुरू javaw -DSTOP.PORT = 8079 -DSTOP.KEY = गुप्त जार start.jar

शुरू javaw -DSTOP.PORT = 8079 -DSTOP.KEY = गुप्त जार start.jar --stop

0

आप PowerShell के साथ ऐसा कर सकते हैं:

$process = Start-Process "javaw" "-jar start.jar" -PassThru 
taskkill /pid $process.Id 

taskkill आदेश पास आवेदन सुंदर होगा।

0

यदि आप सभी जावा प्रक्रियाओं को मारना नहीं चाहते हैं लेकिन निर्दिष्ट जार चलाना चाहते हैं। यह कई जारों के लिए भी काम करेगा।

wmic Path win32_process Where "CommandLine Like '%YourJarName.jar%'" Call Terminate 

वरना taskkill /im java.exe सभी जावा प्रक्रियाओं

0

(विंडोज ओएस पर सेवा के बिना) को मारने के लिए स्प्रिंग बूट शुरू/रोक नमूना काम करेंगे।

run.bat

@ECHO OFF 
IF "%1"=="start" (
    ECHO start your app name 
    start "yourappname" java -jar -Dspring.profiles.active=prod yourappname-0.0.1.jar 
) ELSE IF "%1"=="stop" (
    ECHO stop your app name 
    TASKKILL /FI "WINDOWTITLE eq yourappname" 
) ELSE (
    ECHO please, use "run.bat start" or "run.bat stop" 
) 
pause 

start.bat

@ECHO OFF 
call run.bat start 

stop.bat:

@ECHO OFF 
call run.bat stop 
संबंधित मुद्दे