2011-06-17 14 views
26

क्या कमांड लाइन से स्पष्ट रूप से ग्रहण को बंद करने का कोई तरीका है, जैसे कि फ़ाइलें और कार्यस्थान सहेजे गए हैं? मारो -3 कुछ भी नहीं करता है। मार -1 और हत्या -15 (डिफ़ॉल्ट) ग्रहण JVM समाप्ति पॉपअप के साथ अचानक बाहर निकलने का कारण बनता है। मार -9 एक ही बात करता है।लिनक्स कमांड लाइन से ग्रहण को कैसे बंद करें?

उपयोग का मामला यह है कि मैं उस पर लोड की गई ईक्लीप्स वाली मशीन पर दूरस्थ रूप से काम कर रहा हूं, और मैं ग्रहण को बंद करके स्मृति को सहेजना चाहता हूं, लेकिन मैं ग्रहण को पहले अपने राज्य को सहेजना चाहता हूं।

मैं वीएनसी या कुछ वैकल्पिक डेस्कटॉप साझाकरण सॉफ्टवेयर का उपयोग कर सकता हूं, लेकिन यह वास्तव में भारी वजन है, और मैं कमांड लाइन समाधान पसंद करूंगा।

संपादित करें: सिस्टम की जानकारी: RHEL5.1 64-बिट सूक्ति का उपयोग कर

उत्तर

3

किसी भी जोड़ा ShutdownHooks (more info here) को साफ करना चाहिए जब SIGTERM द्वारा समाप्त JVM द्वारा निष्पादित किया जाना चाहिए। इसलिए, मुझे लगता है कि समस्या इस तरह के सिग्नल से निपटने के लिए प्रोग्राम किया गया है।

जैसा कि मुझे नहीं पता कि ग्रहण प्रक्रिया में सफाई प्रक्रिया कैसे कार्यान्वित की जाती है, मैं केवल यह मान सकता हूं कि इसे ShutdownHook (और Action या कुछ समान) द्वारा नहीं कहा जाता है।

संपादित करें: pidge an answer below लेकिन जो विवरण दिए गए चरणों जो आप बंद करने के लिए कमांड लाइन से सफाई से ग्रहण की अनुमति चाहिए प्रदान की है।

+1

यह सही है। एक प्लगइन डेवलपर एक करीबी कमांड के लिए सॉकेट पर सुनने के लिए एक प्लगइन लिख सकता है, और 'IWorkbench.close() 'पर कॉल करें। या ग्रहण और लॉन्चर को केवल OpenFile कार्रवाई से अधिक समर्थन के लिए अपडेट किया जा सकता है। लेकिन डिफ़ॉल्ट रूप से ग्रहण के साथ कुछ भी नहीं है। –

+0

आज मैं सिर्फ $ kill pid – jorgeu

+0

kill -HUP पिड कॉल करता हूं मेरे लिए अच्छा काम करता है। यह बंद करने के लिए ग्रहण प्राप्त करता है लेकिन फिर भी इसे अपनी सभी लॉक फाइलों को हटाने के लिए एक बदलाव देता है। –

1

आप wmctrl साथ करने की कोशिश की थी? wmtrl -l विंडोज़ और wmlctrl -c -P विंडो को बंद करना चाहिए। वैसे भी आपको ग्रहण के पुष्टिकरण संवाद में समस्या हो सकती है।

+0

इसे इंस्टॉल किया गया और इसके साथ थोड़ा सा झुका हुआ। दूरस्थ रूप से काम नहीं किया (एसएसएच खोल के माध्यम से)। स्थानीय रूप से, यह ग्रहण विंडो भी सूचीबद्ध नहीं करता है। शायद मैं इसे गलत इस्तेमाल कर रहा हूँ? – Maian

+0

यदि आप दूरस्थ रूप से कमांड चला रहे हैं तो आपको DISPLAY पर्यावरण चर 'निर्यात DISPLAY =: 0.0' सेट करने की आवश्यकता है। एक walkthrough के लिए मेरा जवाब देखें। – pidge

0

क्या आपने kill -HUP (kill -1) का प्रयास किया था? - कि एक प्रक्रिया है कि जो कोई भी बातचीत की गई थी के साथ चला गया है दूर बताने के लिए विहित तरीका है और यह उचित रूप से

+0

नहीं जो काम नहीं करता - ग्रहण अचानक समाप्त हो जाता है (JVM समाप्ति संदेश पॉप अप)। – Maian

38

मैंने इसे gigi's answer और another question की सहायता से समझ लिया। आपको अपने पैकेज मैनेजर से wmctrl और xdotool उपयोगिता की आवश्यकता होगी।

$ export DISPLAY=:0.0 

तब (अप्रासंगिक खिड़कियों उदाहरण से elided):

# List windows 
$ wmctrl -l 
... 
0x030000fa 0 kcirb Java - Eclipse 

# Tell Eclipse window to close gracefully 
$ wmctrl -c eclipse 

# Darn, there's a confirmation dialog 
$ wmctrl -l 
... 
0x030000fa 0 kcirb Java - Eclipse 
0x03003c2d 0 kcirb Confirm Exit 

# Find the window id 
$ xdotool search Exit 
Defaulting to search window name, class, and classname 
50347053 

# Send return key to the window 
$ xdotool key --window 50347053 Return 

काम किया

जब तक आप एक ही प्रदर्शन पर एक टर्मिनल एमुलेटर में चला रहे हैं, तो आप सही प्रदर्शन निर्धारित करने की आवश्यकता मेरे लिए उबंटू 12.04 पर, कम से कम।

संपादित करें: Scarabeetle's answer देखें जो आपको स्क्रिप्ट से काम करने के लिए आवश्यक बदलावों के लिए देखें।

+3

धन्यवाद! यह सही काम किया। सुधार का एक मामूली बिंदु 'xdotool खोज निकास' अनावश्यक है क्योंकि यह '0x03003c2d' का दशमलव रूप देता है। आप सीधे 'xmotrl -l' से' xdotool key - विन्डो 0x03003c2d वापसी 'से हेक्स विंडो आईडी का उपयोग कर सकते हैं और खोज चरण को छोड़ सकते हैं। – rkyser

7

पर्याप्त नहीं प्रतिष्ठा ऊपर pidge's answer पर टिप्पणी करने से ... यह लगभग काम करता है, लेकिन मैं खत्म और फिर "बाहर निकलने की पुष्टि" विंडो फ़ोकस देने के लिए कुछ Gnome3 एनीमेशन के लिए प्रतीक्षा करने की जरूरत:

export DISPLAY=:0.0  # Do this in main X session 
wmctrl -c "Eclipse SDK" # Close main window 
sleep 1     # Wait for animation 
wmctrl -a "Confirm Exit" # Give focus to the dialog 
# Send a Return keypress to press the OK button 
xdotool key --window $(xdotool search "Confirm Exit") Return 
2

जावा प्रक्रिया (एसएस) की हत्या का प्रयास करें।ps -ea | grep java

0

है इस सवाल का जवाब एक समान अंक में मेरे लिए मददगार था: Eclipse hanging, how to kill it properly?

बाद मैं ग्रहण प्रक्रिया ग्रहण खिड़की वहां रखा जब तक मैं जावा प्रक्रिया को मार डाला मार डाला (मैं एक javaw नहीं था ऊपर दिए गए उत्तर में प्रक्रिया करें। मेरे पास केवल एक "जावा" प्रक्रिया थी जब समस्या को हल करने के दौरान)।

संबंधित मुद्दे