यदि हम ssh करते हैं और फिर डिस्कनेक्ट करते हैं तो एक सतत संचालन का क्या होता है?


10

मैं mv कमांड का उपयोग करके एक निर्देशिका को दूसरे में ले जा रहा हूं।

हालांकि, मुझे अपने कंप्यूटर को बंद करने के लिए मजबूर किया गया था, जिसका अर्थ है कि सर्वर से कनेक्शन खोना।

क्या होता है mv कमांड?

नोट: जब मैं पुन: जुड़ने के बाद, मैंने देखा कि सभी फाइलें ठीक से स्थानांतरित हो गई हैं, हालांकि मुझे यकीन है कि जब मैंने कनेक्शन बंद किया था, तो यह स्थानांतरित नहीं हुआ था। ऐसा लगता है कि एमवी ने लगातार जारी रखा।

यह मुझे लगातार सेंट सर्वर में सेंटोश मशीन के लिए ssh है।


मुझे लगता है, यह स्रोत / गंतव्य की अनुपलब्धता के बारे में एक त्रुटि फेंक देगा
SHW

1
एक निर्देशिका को दूसरे में ले जाना "तात्कालिक" है यदि वे समान विभाजन पर हैं। और यहां तक ​​कि अगर आप फ़ाइलों को प्रति फ़ाइल स्थानांतरित करते हैं, तो यह तेज़ हो सकता है। क्या आप सुनिश्चित हैं कि आपके डिस्कनेक्ट होने के बाद भी यह जारी रहा (खत्म होने के बजाय जब विभिन्न SITEUP सिग्नल चाइल्ड प्रोसेस को भेजे जाते हैं, जो कुछ [कंप्यूटर स्केल पर] समय ले सकते हैं।)
ओलिवियर डलाक

वर्कअराउंड के रूप में, उपयोग करें screenया tmuxएक बार वर्चुअल टर्मिनल शुरू करने के लिए लॉग इन करें जो आपके डिस्कनेक्ट होने पर काम करना जारी रखेगा [अर्थात, आप बाद में इसे फिर से संलग्न कर सकते हैं और टर्मिनल को उसी स्थिति में देख सकते हैं जब आपने इसे छोड़ा था, साथ ही किसी भी अपडेट में के बीच]
ओलिवियर दुलैक

जवाबों:


19

यदि mvइसे शुरू किया गया था:

ssh host mv x y

तब mvएक SIGPIPE (और मर जाएगा) प्राप्त होगा अगर यह stdout या stderr (एक त्रुटि की तरह) के लिए कुछ भी लिखने की कोशिश करता है।

यदि आपने एक इंटरैक्टिव सत्र शुरू किया है जैसे:

ssh host

और mvइसमें इंटरेक्टिव शेल से शुरू हुआ , जब छद्म टर्मिनल के मास्टर साइड को sshdबंद करना शुरू हो जाएगा ( sshबाहर निकलने पर टीसीपी कनेक्शन बंद करने पर), सत्र का नेता छद्म टर्मिनल के दास पक्ष के साथ जुड़ा हुआ है, रिमोट इंटरेक्टिव शेल है, जो SIGHUP सिग्नल प्राप्त करेगा (हैंग अप)।

उस सिग्नल को प्राप्त करने पर, गोले (जब तक कि आपने जारी नहीं किया है trap '' HUP) आम तौर पर उन नौकरियों में सभी प्रक्रियाओं को संकेत देते हैं जो उन्होंने शुरू किए हैं, जब तक कि आपने स्पष्ट रूप से यह नहीं बताया है (जैसे कि कुछ गोले में disownया उसके साथ &|)।

अन्य प्रक्रियाओं (जैसे mv) आम तौर पर जब कि संकेत प्राप्त जब तक वे (का उपयोग करके इसे नजरअंदाज करने के लिए कहा गया है मर जाएगा nohupया अगर उनके माता पिता इसे नजरअंदाज)।

यदि आपने जारी किया है:

trap '' HUP

इसके बाद शुरू की गई सभी नौकरियां इसे विरासत में मिलेंगी और SIGHUP की अनदेखी करेंगी।

खोल डिस्कनेक्ट पर भेजे गए SITEUP सिग्नल से नहीं मरेगा, लेकिन अगले प्रांप्ट पर बाहर निकल जाएगा, क्योंकि इसकी स्टड चला गया है। बाहर निकलने पर, कुछ गोले उनके (गैर-विस्थापित) नौकरियों के लिए SITEUP भेजते हैं। trap '' HUPवसीयत के बाद शुरू होने वाले लोग इसे अनदेखा करेंगे, बाकी लोग मर जाएंगे।

संक्षेप में, उस मामले में, जब तक कि आपने पूर्व सावधानी नहीं बरती है ताकि ऐसा न हो, आपकी mvमृत्यु हो जाएगी।

अगली बार इससे बचने के लिए, यदि मशीन का उपयोग करने से पहले tcsh, zshया bash, बंद करने से पहले, Ctrl-Zउसे स्थगित mvकरने के bgलिए , उसे पृष्ठभूमि में फिर से शुरू करने के लिए, और disownउसे अस्वीकृत करने के लिए दबाएं ।

या आप उपयोग कर सकते हैं screenया tmux। एक साइट पर, वे बस अपने अब चले गए होस्ट टर्मिनल से अलग हो जाएंगे, लेकिन टर्मिनल में चलने वाले एप्लिकेशन हेडलेस होकर चलते रहेंगे और सत्र को दूसरे टर्मिनल तक पहुंचाने के लिए बाद में देखें कि कैसे mvगए।

या SIGHUP के nohup mvलिए mvप्रतिरक्षा बनाने के लिए उपयोग करें और इसका आउटपुट और त्रुटियां एक nohup.outफ़ाइल पर जाएं जिसे आप बाद में जांच सकते हैं।

अब, मुझे आपके विशिष्ट होस्टिंग प्रदाता के बारे में नहीं पता है, लेकिन कुछ के साथ, जब आप sshउदाहरण में हैं, तो आप वहां पर एक शेल सत्र शुरू नहीं कर रहे हैं, बल्कि कंसोल से संलग्न हैं , जो कि पहले से शुरू हो चुके सत्र के लिए है। , और जब आप बाहर निकलते हैं, तो आप उस सत्र को समाप्त नहीं करते हैं, बस उससे अलग हो जाते हैं। इसलिए, शेल को न तो मार मिलती है और न ही mv। अगर ऐसा है, तो आप देखेंगे कि psवहाँ से चलने वाले आपको pidदो अलग-अलग sshसत्रों में अपने शेल के लिए समान देंगे ।


तो आप कह रहे हैं कि mv को समाप्त कर दिया जाएगा। खैर, कृपया नोट की जाँच करें।
user4951

2
+1। बकाया जवाब (जैसा कि विवरण में अच्छी तरह से बताया गया है कि क्या और कब होता है)।
ओलिवियर दुलैक

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