वियोग के बाद SSH सत्र चालू रखें


208

मेरे पास कभी-कभी लंबे समय तक चलने वाली प्रक्रियाएं होती हैं जिन्हें मैं घर जाने से पहले किक करना चाहता हूं, इसलिए मैं प्रक्रिया शुरू करने के लिए सर्वर पर एक एसएसएच सत्र बनाता हूं, लेकिन फिर मैं अपना लैपटॉप बंद करना चाहता हूं और घर जाना चाहता हूं और बाद में, रात के खाने के बाद, मैं चाहता हूं कि उस प्रक्रिया पर जाँच करें जो मैंने काम छोड़ने से पहले शुरू की थी। मैं SSH के साथ ऐसा कैसे कर सकता हूं? मेरी समझ यह है कि यदि आप अपने SSH कनेक्शन को तोड़ते हैं तो आप सर्वर पर अपना लॉगिन सत्र भी तोड़ देंगे, इसलिए लंबी चलने वाली प्रक्रिया को मारना होगा।

जवाबों:


205

nohupहैंगअप सिग्नल को अनदेखा करने के लिए अपनी प्रक्रिया का उपयोग करें :

$ nohup long-running-process &
$ exit

20
यह बात है। स्क्रीन या tmux स्थापित करने की आवश्यकता नहीं है। यह वास्तव में इसे करने का अच्छा पुराना तरीका है। ज़रूर 'स्क्रीन' या 'tmux' दोनों ही शानदार ऐप हैं और ज़रूरत पड़ने पर इनका इस्तेमाल किया जाना चाहिए, लेकिन बैकग्राउंड में एक प्रोसेस को चलाने में जितना आसान है, उतने से आप लॉग इन कर सकते हैं।
Reiche

2
क्या नोह की तरह है?
cjac

28
उनके समान उद्देश्य हैं, लेकिन वे कई मायनों में भिन्न हैं। nohupSITEUP को इंटरसेप्ट करता है ताकि जब वह शेल चला जाए तो वह क्विटअप हो जाए और अपने सभी स्टिल-रनिंग बच्चों को SITEUP भेजता है, long-running-processतो वह मर नहीं जाता है। disownबस बश की बच्चे की सूची से निर्दिष्ट नौकरी को हटा देता है, इसलिए यह SIGHUP को भेजने की कोशिश नहीं करेगा। nohupशेल से अलग एक प्रोग्राम है, इसलिए यह सभी शेल के साथ काम करता है, जबकि disownबैश बिलिन है। nohupचलाने के लिए आदेश को स्वीकार करता है, जबकि disownकेवल नौकरी शुरू होने के बाद काम करता है और आपने इसे पृष्ठभूमि में रखा है ताकि आप शेल पर वापस आ सकें।
वॉरेन यंग

3
उन लोगों के लिए भयानक त्वरित समीक्षा जो नोह और अव्यवस्था से
दान

7
tail -f nohup.outयह जाँचने के लिए कि आपके वापस आने पर क्या हो रहा है।
बजे रिकार्डो स्टुवेन

141

आप GNU स्क्रीन का उपयोग करना चाहते हैं। यह सुपर कमाल है!

ssh me@myserver.com
screen               #start a screen session
run-a-long-process

CTRL+ a, dअपने स्क्रीन सत्र से अलग करने के लिए

exit                 #disconnect from the server, while run-a-long-process continues

जब आप अपने लैपटॉप पर वापस आते हैं:

ssh me@myserver.com
screen -r            #resume the screen session

फिर अपनी लंबी चलने वाली प्रक्रिया की प्रगति देखें!

screenएक बहुत व्यापक उपकरण है, और मैंने जो कुछ भी वर्णित किया है उससे बहुत अधिक कर सकता है। स्क्रीन सत्र में, ctrl + a ,? कुछ सामान्य आदेशों को सीखने के लिए। संभवतः सबसे आम हैं:

  • CTRL+ a, cएक नई विंडो बनाने के लिए
  • CTRL+ a, nअपने स्क्रीन सत्र में अगली विंडो पर जाने के लिए
  • CTRL+ a, pअपने स्क्रीन सत्र में पिछली विंडो पर स्विच करने के लिए
  • यदि आप विभिन्न प्रणालियों के एक समूह से लॉग इन करते हैं, तो आप गलती से अपने आप को एक अलग कंप्यूटर पर एक सक्रिय स्क्रीन सत्र से जोड़ सकते हैं। इस कारण से, मैं हमेशा screen -d -rयह सुनिश्चित करने के लिए फिर से शुरू करता हूं कि यदि मेरे स्क्रीन सत्र में एक और शेल जुड़ा हुआ है, तो इसे अपने मौजूदा सिस्टम पर फिर से शुरू करने से पहले मुझे अलग कर दिया जाएगा।

8
tmux स्क्रीन का एक आधुनिक एनालॉग है।
zvolkov

मुझे आधुनिक के बारे में नहीं पता, लेकिन डिफ़ॉल्ट कुंजी उपसर्ग tmux (Ctrl + b) की मदद करता है यदि आप कुंजियों को खाली करने के लिए उपयोग किए जाते हैं।
सजीथ

2
यदि आप किसी कारण से साझा टर्मिनल चाहते हैं तो स्क्रीन बहुत अच्छी है। एक स्क्रीन बनाएं screen -S nameऔर अपने दूसरे दोस्त को इसके साथ कनेक्ट होने दें screen -x name
पैट्रिक

1
tmuxके साथ tmuxinatorफैंसी सेटअप के लिए एक शानदार संयोजन है, जबकि मैं screenएक त्वरित और सरल समाधान के रूप में पसंद करता हूं ।
पृथ्वीमूर्ति

यह उत्तर सबसे अच्छा है .. मुझे यह पसंद है। उत्कृष्ट अनुसंधान
जाफर विल्सन

42

यदि आपने आगे और सेटअप screenआदि की योजना नहीं बनाई है , तो बस निम्नलिखित कार्य करें:

  1. यदि आपकी प्रक्रिया पृष्ठभूमि में चल रही है: गोटो # 3, और: Ctrl-Zअग्रभूमि प्रक्रिया निलंबित करने के लिए। यह उदाहरण के लिए, निलंबित प्रक्रिया की नौकरी की रिपोर्ट करेगा:

    [1]+  Stopped                 processName
    
  2. processNameपृष्ठभूमि के साथ भेजें bg %1(जो भी काम # का अनुसरण कर रहा है %)। यह processNameपृष्ठभूमि में फिर से शुरू होगा ।

  3. के processName साथ डिसाइडdisown %1 या disown PID-hयदि आप अपना वर्तमान शेल समाप्त करना चाहते हैं, तो यदि आप स्वामित्व बनाए रखना चाहते हैं, तो ध्वज का उपयोग करें ।


5
इसके लिए धन्यवाद! मेरा काम चल रहा था और मुझे लगा कि मैं इसे चालू नहीं रख पाऊंगा क्योंकि &जब मैंने इसे शुरू किया था तो मैंने इसका इस्तेमाल नहीं किया था । यह महान काम करने लगता है!
मैट

4
ये अद्भुत है! मैं कभी नहीं जानता था कि लिनक्स आपको इस तरह सक्रिय प्रक्रियाओं का नियंत्रण स्थानांतरित कर सकता है। मुझे डर था कि लंबे समय से चल रही प्रक्रिया के बीच में एसएसएचईंग मेरे सर्वर में मर जाएगा, और यह मेरे लिए जवाब था!
प्लूटो

14

आप जो भी उपयोग करना चाहते हैं वह स्क्रीन है या स्क्रीन-बायोबू नामक उपयोगकर्ता के अनुकूल आवरण के आसपास भी बेहतर है।

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

बायोबू एक रैपर है जो आसानी से ctrl-a से कुंजी संयोजन के बजाय एक साधारण फ़ंक्शन कुंजी के साथ नई स्क्रीन खोलने की अनुमति देता है। यह सभी खुले आभासी टर्मिनलों के साथ एक स्थिति रेखा भी दिखाता है जिसे नाम दिया जा सकता है।

एक और अच्छी विशेषता यह है कि आपके ssh कनेक्शन के डिस्कनेक्ट होने के दौरान आपकी सारी स्क्रीन ऊपर रह सकती है। आप बस ssh के माध्यम से फिर से कनेक्ट करें और बायोबू को कॉल करें और सब कुछ पहले जैसा है।

आख़िरकार बायोबू के कुछ स्क्रीनशॉट


मैंने बायोबू टर्मिनल के भीतर अपने सर्वर पर एक प्रक्रिया शुरू की, वास्तव में यह जाने बिना कि मैं क्या था (मैंने बस टर्मिनल खोजा और बायोबू पर क्लिक किया क्योंकि मैंने इसे पहले कभी नहीं देखा था)। मैं ब्योबू का उपयोग करता रहा क्योंकि इसके नीचे एक रंगीन स्थिति पट्टी थी और मुझे लगा कि यह शांत है। आज मैंने खुद को उस टर्मिनल सत्र को एसएसएच के माध्यम से दूर से एक्सेस करना चाहा। मुझे बस "बायोबु" टाइप करना था और उसने उस टर्मिनल सत्र को तुरंत दिखाया। वास्तव में खुश मैं byobu भर में ठोकर खाई!
निक

8

यह ध्यान देने योग्य हो सकता है

ssh -t lala screen -rxU mooमेजबान लाला पर म्यू सत्र के लिए संलग्न करेंगे

ssh -t lala screen -S mooहोस्ट लाला पर एमओयू सत्र बनाएगा

तथा

ssh -t lala screen -S moo quuxपैदा करेगा मू मेजबान पर सत्र लाला और कार्यक्रम चलाने quux , पूरा होने पर सत्र छोड़ने।


3

पुराना सवाल, अजीब है फिर भी किसी ने tmux को सलाह नहीं दी , जो n कंसोल के लिए एक आवरण के रूप में कार्य करता है और जब तक आवश्यक हो, उन्हें खुला रखता है। यह अधिक नियंत्रण की अनुमति देता है, कई कार्यों के बगल में tmux है। इसे प्रबंधित करना आसान है, आप बस tmux को निष्पादित करते हैं, जो आपको इसके शेल में लाता है, अपना लूंग काम शुरू करें, फिर ctrl + b दबाएं जिसके बाद d (detach) ( ctrl+btmux का "ओके गूगल" है, और dइसे बंद करने का कमांड है शेल से बाहर निकलने के बिना)। यह वास्तव में काम करता है यदि आप बस करीब हैं, उदाहरण के लिए, पोटीन। रात के खाने के बाद, जब आप फिर से कनेक्ट करते हैं, तो आप tmux attachअपनी स्क्रीन को देखने के लिए tmux को फिर से खोल सकते हैं जैसे आपने छोड़ा था। मैं कुछ प्यार करता हूँ फलक बंट रहा है: ctrl+bऔर फिर दबाएँ "। एक फलक से दूसरे में बदलने के लिए, ctrl+bऔर फिर ऊपर / नीचे तीर दबाएँ।


3

आप यहां एक अच्छा मार्गदर्शक पा सकते हैं: अपने एसएसएच सत्र को चालू रखें जब आप डिस्कनेक्ट करते हैं

sudo apt-get install screen

अब आप कमांड लाइन पर स्क्रीन टाइप करके नया स्क्रीन सेशन शुरू कर सकते हैं। आपको स्क्रीन के बारे में कुछ जानकारी दिखाई जाएगी। हिट दर्ज करें, और आप एक सामान्य संकेत पर होंगे।

तुरंत उत्तराधिकार में डिस्कनेक्ट करने के लिए (लेकिन सत्र चलाना छोड़ दें) हिट Ctrl+ Aऔर फिर Ctrl+ D। आप संदेश देखेंगे [अलग]

पहले से चल रहे सत्र के लिए फिर से कनेक्ट करने के लिए

screen -r

मौजूदा सत्र के लिए फिर से कनेक्ट करने के लिए, या यदि कोई मौजूद नहीं है तो एक नया बनाएं

screen -D -r

रनिंग स्क्रीन सत्र हिट Ctrl+ Aऔर फिर Cतत्काल उत्तराधिकार के अंदर एक नई विंडो बनाने के लिए । आपको एक नया संकेत दिखाई देगा।

तत्काल उत्तराधिकार में एक स्क्रीन विंडो से दूसरे हिट Ctrl+ Aऔर फिर Ctrl+ पर स्विच करने के लिएA

ओपन स्क्रीन विंडोज हिट Ctrl+ Aऔर फिर Wतत्काल उत्तराधिकार में सूचीबद्ध करने के लिए


आप <kbd>Ctrl</kbd>कीबोर्ड कुंजियों के रूप में नाम दिखाने के लिए उपयोग कर सकते हैं ।
टॉमाज़

1

मैं NX NoMachine का उपयोग करता हूं, जो मेरे लिए निःशुल्क है क्योंकि यह केवल मैं ही हूं। अनिवार्य रूप से, यह सर्वर पर एक एक्स सत्र चलाता है जिसे आप कनेक्ट कर सकते हैं और बार-बार डिस्कनेक्ट कर सकते हैं। जब आप कनेक्ट नहीं होते हैं तो X सत्र चालू रहता है। कनेक्शन कहीं से भी किए जा सकते हैं। आप फ़्लोटिंग विंडो या पूरे डेस्कटॉप वाले एकल विंडो (उदाहरण के लिए पूर्ण ग्नोम डेस्कटॉप) के बीच चयन कर सकते हैं। क्लाइंट (जिसे आप अपने लैपटॉप पर चलाएंगे) को लिनक्स, मैकओएस, सोलारिस या माइक्रोसॉफ्ट विंडोज पर चलाया जा सकता है। बाद के मामले में यदि आप फ्लोटिंग विंडो चुनते हैं तो वे व्यक्तिगत रूप से विंडोज टास्कबार पर दिखाई देते हैं।

मैं अपने विंडोज एक्सपी लैपटॉप का उपयोग करता हूं (जो मुझे कुछ विंडोज-विशिष्ट हार्डवेयर की आवश्यकता है) एनएक्स नोमैचिन का उपयोग करते हुए अपने दो लिनक्स सर्वरों के लिए सामने के छोर के रूप में। मैं लिनक्स से अपने विंडोज लैपटॉप से ​​जुड़े प्रिंटर पर भी प्रिंट कर सकता हूं।

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