SSH के माध्यम से स्क्रिप्ट कैसे चलाएं जो कि मेरे पास कनेक्शन होने पर समाप्त नहीं होती है?


18

मुझे स्क्रिप्ट चलाने की आवश्यकता है, जिसे निष्पादित करने में लंबा समय लगता है, या मैं चाहता हूं कि यह हमेशा के लिए चले। मैं अपनी मशीन के लिए सिर्फ SSH नहीं कर सकता, क्योंकि जब मैं डिस्कनेक्ट करता हूं तो यह चलना बंद हो जाता है।

क्या स्क्रिप्ट को चलाने का कोई तरीका है जो उस शेल पर निर्भर नहीं है जो इसे शुरू किया है?

मैं Ubuntu 9.04 का उपयोग कर रहा हूं।

जवाबों:


24

आप इससे पहले nohup कमांड से कमांड चला सकते हैं। आप इसे 'स्क्रीन' में भी चला सकते हैं, जो आपको टर्मिनल को रीटच करने देगा।

उदाहरण के लिए:

ssh mySever 'nohup bash myscript.sh'

या सिर्फ ssh और nohup कमांड चलाएं। जब आप डिस्कनेक्ट करते हैं तब भी इसे चालू रखना चाहिए। ऐसा इसलिए है क्योंकि nohup Sलाइटअप सिंगल (हैंगअप) को इंटरसेप्ट करेगा।

स्क्रीन थोड़ा अधिक शामिल है, लेकिन 20 मिनट के लिए आपको मूल बातें सीखने में लग सकता है, यह वहां से सबसे उपयोगी उपकरणों में से एक है। यहाँ एक ट्यूटोरियल है


काइल द्वारा छीनी ...> मुस्कान <
इवान एंडरसन

+1 जो कोई भी इवान को छीनता है। हैप्पी 10K :)
स्क्वीलमैन

1
ट्यूटोरियल के लिए लिंक टूट गया है :(
पक्षी रैन

7

मैं हमेशा सिर्फ नोह का उपयोग करता हूं। यदि मैं आउटपुट के बारे में परवाह करता हूं, तो मैं इसे लॉग फ़ाइल में रीडायरेक्ट करता हूं, अन्यथा मैं इसे / देव / अशक्त में भेज देता हूं।

उदाहरण:

nohup scp file.tar.gz root@someserver:/var/tmp > /dev/null 2>&1 &

यह पृष्ठभूमि में डालता है, आउटपुट के साथ / dev / null पर जा रहा है, और यदि आप लॉग आउट करते हैं तो यह HUP सिग्नल के लिए प्रतिरक्षा है। आप कुछ गोले (जैसे बैश) के साथ काम को "विस्थापित" भी कर सकते हैं ताकि यह आपके सत्र से जुड़ा न हो।

disown %1

1
+1 डिसाइड के लिए - बहुत उपयोगी है जब आप nohup का उपयोग करना भूल जाते हैं
मार्क

5

स्क्रीन स्थापित करने के लिए: apt-get install screen

तो बस का उपयोग कर लॉन्च: screen

और man screenकुंजी बंधन प्राप्त करने के लिए।


+1! स्क्रीन दा बात है!
जेवियर

मैं स्क्रीन का उपयोग करता था, लेकिन कई कारणों से tmux में बदल गया। Google "tmux बनाम स्क्रीन" और आपको इस तरह के कुछ लिंक
मिलेंगे

2

जब आप एक सर्वर में लॉग इन होते हैं, तो आप निम्नलिखित कमांड द्वारा स्क्रिप्ट को अलग मोड में चला सकते हैं:

nohup script >script.out 2>script.err &

बाद में जब आप फिर से लॉग इन करते हैं, तो आप किसी भी आउटपुट के लिए script.out और किसी भी त्रुटि संदेशों के लिए script.err की जांच कर सकते हैं। यदि आप एक ही फ़ाइल में आउटपुट और त्रुटि संदेश चाहते हैं, तो यह करें:

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