वहाँ एक जावा प्रोग्राम का नाम अकेले जानने से एक खोल स्क्रिप्ट का उपयोग कर उन्हें रोकने का ksh खोल उपयोग कर रहा हूँशैल स्क्रिप्ट एक जावा कार्यक्रम को रोकने के लिए
उत्तर
आसानी से पहचानने के लिए JVM में एक अनूठी संपत्ति जोड़ें, उदा। test.class के लिए
java -Duniquename=1 test
यह मारने के लिए:
ps ax | grep uniquename | grep -v grep | awk '{print $1}' | xargs kill
आप pkill उपयोग कर सकते हैं एक रास्ता है:
pkill your_java_program_name
यह काम करेगा यदि आप अपने प्रोग्राम का केवल एक उदाहरण चला रहे हैं।
आप शुरू जावा-प्रोग्राम के नाम से जुड़े प्रक्रिया-आईडी की पहचान करने वाले जेपीएस का उपयोग कर सकते हैं (जेपीएस जावा प्रोग्राम के लिए एक प्रोसेस-मैनेजर है)। इस आईडी के साथ आप सामान्य रूप से प्रक्रिया को मार सकते हैं।
के रूप में चलाने के लिए है, मेरा जावा फ़ाइल नाम test.java है और इसे कैसे ढूंढ रहा है यह चल रहा है? – Harish
मुझे जेपीएस में पेश करने के लिए +1 :) – sfussenegger
@ हरिश: इसे संकलित करने और इसे निष्पादित करने के बाद इसे 'परीक्षण' के रूप में दिखाया जाएगा। यदि आप इसे निष्पादन योग्य जार (test.jar) में पैकेज करते हैं और 'जावा -jar test.jar' के माध्यम से निष्पादित करते हैं तो jps 'test.jar' दिखाता है। – Mnementh
Mnementh' suggestion पर निम्नलिखित: सूची जावा:
इस
jps -l | grep org.example.MyMain | cut -d ' ' -f 1 | xargs -rn1 kill
jps -l
काम करना चाहिए समर्थक सेस "एप्लिकेशन के मुख्य वर्ग के लिए पूर्ण पैकेज नाम या एप्लिकेशन की जेएआर फ़ाइल में पूर्ण पथ नाम" के साथ।grep
: प्रक्रिया आपcut -d -' ' -f 1
चाहते चुनें: विभाजित सीमांकक '' और प्रिंट केवल पहले एक (पीआईडी)xargs -rn1 kill
का उपयोग कर स्तंभों में उत्पादन: प्रत्येक पीआईडी के लिए मारने पर अमल (यदि कोई हो)
ध्यान दें कि आप JPS और एक ही उपयोगकर्ता (या रूट) के साथ xargs चलाना चाहिए आप इस प्रक्रिया
0 चला रहे हैं के रूप में+1 प्रत्येक 'वाह' के लिए।:) – Nishant
यह विंडोज मशीनों के लिए भी काम करेगा, लेकिन आपको इसका उपयोग करने के लिए 'मारने' का पता लगाने के लिए कुछ पर्यावरण पहचान करने की आवश्यकता होगी। –
@Odelya मैंने इस त्रुटि से बचने के लिए अभी ''r' ('--no-run-if-empty') को' xargs' में जोड़ा है। – sfussenegger
आप अपने उत्पादन को स्वरूपित करने ps का -ओ विकल्प का उपयोग कर सकते हैं,
ps -eo cmd,pid | awk '!/awk/&&/mycommand/{cmd="kill -9 "$2;system(cmd)}'
जानने क्या नाम? यदि आप निष्पादन योग्य (जो आमतौर पर 'जावा' है) का नाम जानते हैं, तो 'killall' आपका मित्र है। – sfussenegger
@sfussenegger: शायद वह सभी जावा-प्रक्रियाओं को मारना नहीं चाहता, लेकिन केवल एक विशिष्ट है। – Mnementh
@Mnementh मैं यही उम्मीद करता हूं, लेकिन दी गई जानकारी से यह सबसे अच्छी बात है जिसे मैं अनुशंसा कर सकता हूं। – sfussenegger