Google क्लाउड पर SSH के बंद होने पर जावा ऐप को चालू रखना


12

अभी मैं SSH-ing द्वारा एक जावा ऐप चला रहा हूं जो Google क्लाउड कंप्यूट पर VM के लिए है। मैं ऐप चलाने के लिए एक कमांड जारी करता हूं और यह एक कंसोल को लोड करता है। जैसे ही मैं SSH कनेक्शन समाप्त करता हूं, ऐप बंद हो जाता है। मैं यह मानता हूं क्योंकि कंसोल को बंद कर दिया गया है।

मैं SSH को समाप्त करने के बाद इस एप्लिकेशन (जो एक सर्वर है) को जारी रखना चाहता हूं, और, किसी भी बिंदु पर, मैं सर्वर पर कंसोल और कमांड को फिर से कनेक्ट करने में सक्षम होना चाहूंगा।


जवाबों:


15

आप यह बताएं:

मैं SSH को समाप्त करने के बाद इस एप्लिकेशन (जो एक सर्वर है) को जारी रखना चाहता हूं, और, किसी भी बिंदु पर, मैं सर्वर पर कंसोल और कमांड को फिर से कनेक्ट करने में सक्षम होना चाहूंगा।

लक्ष्यों में थोड़ा अस्पष्ट है, लेकिन मैं इसे एक छुरा ले जाऊंगा!

लिनक्स सर्वर पर बैकग्राउंड प्रोसेस के रूप में किसी भी कमांड को चलाने के लिए, आपको कमांड को पहले से तैयार करना चाहिए nohupऔर &अंत में जोड़ना चाहिए ।

तो अंतिम आदेश होगा:

nohup [your command] &

इसका nohupमतलब है कि कमांड को "हैंग अप्स" को नजरअंदाज करना चाहिए और इसमें &जोड़ा गया एम्पर्सैंड एक शेल कमांड है जो सिस्टम को बैकग्राउंड प्रोसेस के रूप में चलाने के लिए कहता है। इसके उपयोग के बारे में अधिक जानकारी यहां पाई जा सकती है

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


1
अगर मैं प्रक्रिया में वापस आना चाहता हूं और जावा कंसोल में कमांड दर्ज करना चाहता हूं, तो मैं यह कैसे करूंगा?
नूहब 32

1
@ Noahb32 खैर, यह इसे एक पृष्ठभूमि प्रक्रिया के रूप में लॉन्च करेगा; मैं ज्यादातर इस तरीके का इस्तेमाल सिर्फ एक प्रक्रिया शुरू करने के लिए करता हूं और फिर इसे भूल जाता हूं। यदि आप एक नया जावा कंसोल शुरू करना चाहते हैं, तो आप बस ऐसा कर सकते हैं क्योंकि आप शेल में वापस आ गए हैं। लेकिन शायद आपको screenइसके बजाय जांच का उपयोग करना चाहिए क्योंकि यह आपको लॉन्च के बाद सत्र में वापस आने की अनुमति देता है। ईमानदारी से आपका प्रश्न एक बड़ा अस्पष्ट है, इसलिए यदि आप इसे स्पष्ट कर सकते हैं, तो इससे स्पष्ट बातें सामने आ सकती हैं।
जेकगॉल्ड 23

1
धन्यवाद! मैं यह जोड़ना चाहता हूं कि आप दूसरे टर्मिनल से आउटपुट की निगरानी कर सकते हैं: बस tail -f nohup.outउसी काम में भाग लें। dir।
naXa

3

ऐसा करने के कम से कम तीन तरीके हैं: nohup('हैंग अप'), screen/ tmux, या disown। सर्वर से कनेक्ट करने और डिस्कनेक्ट करने के बाद डेमॉन के साथ बातचीत करने की आवश्यकता के रूप में यह आपसे थोड़ा अस्पष्ट है।

यदि यह मामला है, nohupऔर disownआप प्रक्रिया जारी करते समय अच्छे मैच नहीं होंगे (हालाँकि यह चलता रहता है)। tmux(और भी screen) जब आप एक शब्द भी चालू रखेंगे।

अधिक जानकारी के लिए आप संबंधित पेज देख सकते हैं:

man nohup
man tux

बैश डिसऑन (यह मानते हुए कि आप बैश चला रहे हैं, हालांकि कई अन्य शेल में कुछ इसी तरह शामिल हैं)


ऐसा लगता है कि disownGoogle क्लाउड पर कोई कमांड नहीं है , कम से कम मैं जिस उदाहरण का उपयोग कर रहा हूं, वह 2019 या 2018 के अंत में शुरू हुआ था। nohupकमांड ठीक काम करता है, लेकिन यह एक अतिरिक्त फ़ाइल बनाता है जो शायद नहीं चाहता है।
trysis

1

अपने रनिंग शेल से किसी एप्लिकेशन को अलग करने के लिए, शेल से बाहर निकलने के बाद इसे जारी रखना, nohupकमांड का उपयोग करना ।

आप बस के साथ अपने सामान्य आदेश उपसर्ग nohupऔर यह काम करना चाहिए।


0

अगर कोई काम नहीं कर रहा है, तो भी आप स्क्रीन का उपयोग कर सकते हैं :

 ssh into your remote box. 

स्क्रीन टाइप करें फिर अपनी इच्छित प्रक्रिया शुरू करें।

Press Ctrl-A then Ctrl-D. 

यह आपके स्क्रीन सत्र को अलग कर देगा लेकिन आपकी प्रक्रियाओं को चालू रखेगा। अब आप दूरस्थ बॉक्स से लॉग आउट कर सकते हैं।

If you want to come back later, log on again and type screen -r This will resume your screen session, and you can see the output

का

आपकी प्रक्रिया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.