Ssh पर एक लंबे समय से चल रही कमान


10

मैं sshएक सर्वर में प्रवेश कर रहा हूं और मैं एक पायथन स्क्रिप्ट शुरू कर रहा हूं जो लगभग लेगा। पूरा करने के लिए 24 घंटे। यदि मेरा इंटरनेट कनेक्शन बीच में ही मर जाए तो क्या होगा? क्या इससे आज्ञा रुक जाएगी?

क्या मेरे लंबे समय से चलने वाले कमांड को इस तरह से चलाने का कोई तरीका है कि स्थानीय डिस्कनेक्ट इसे प्रभावित न करें और मैं sshफिर से लॉग इन करने के बाद भी इसका आउटपुट देख सकता हूं ?

जवाबों:


29

सबसे अच्छा तरीका है screen(सर्वर पर) कमांड को चलाने के लिए एक सत्र शुरू करने के लिए और फिर स्क्रीन को डिस्कनेक्ट करें ताकि यह चालू रहे, और आप अन्य चीजें कर सकते हैं, या बस सर्वर से डिस्कनेक्ट कर सकते हैं। दूसरा विकल्प यह है कि आप के nohupसाथ संयोजन में उपयोग &करना हैnohup <command> &


स्क्रीन। या आप एक क्रोन कार्य को सेटअप कर सकते हैं यदि इसकी कोई चीज आप एक बार फिर चलाते हैं।
xeon

2
यदि आप स्क्रीन में चल रहे हैं, तो आप डिस्कनेक्ट screen -rहो जाएंगे।
dpflug

2

तुम भी उपयोग कर सकते हैं disown, तो आप पहले से ही बिना प्रक्रिया शुरू कर दिया है screenयाnohup


2

मौजूदा उत्तर अच्छी तरह से काम कर सकते हैं, लेकिन मुझे बिजीबॉक्स (घर के राउटर जैसे न्यूनतम हार्डवेयर के लिए एक शेल और टूल्स का सेट) के लिए कुछ चाहिए। मेरे प्रणाली नहीं है screen, dtach, at, disown, या यहाँ तक nohup! तो एसओ ( लिंक ) पर tbc0 के लिए धन्यवाद , मुझे यह रत्न मिला। यह तुरंत लौटता है लेकिन सर्वर प्रक्रिया चलती रहती है:

ssh myserver 'sleep 100 >&- 2>&- <&- &'

या, यदि कई आदेशों की आवश्यकता है:

ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'

स्पष्टीकरण:

  • >&- - क्लोजआउट हैंडल
  • 2>&- - क्लोजर
  • <&- - पास स्टड
  • & - पृष्ठभूमि में प्रक्रिया डालें

यह कोई बाहरी प्रोग्राम का उपयोग नहीं करता है और इसे ksh, ash, Bourne shell, bash, आदि पर काम करना चाहिए।


1

यदि आप एक प्रक्रिया की पृष्ठभूमि बनाते हैं और अपना सत्र बंद करते हैं तो प्रक्रिया init (PID 1) द्वारा अपनाई जाएगी।

अगर मेरे पास एक सत्र और है:

]$ sleep 10000 &
]$ exit

और दूसरा सत्र खोलें और चलाएं:

]$ ps -ef | grep sleep
501      26387     1  0 16:37 ?        00:00:00 sleep 10000
root     26422 21360  0 16:40 pts/0    00:00:00 grep sleep

मेरी प्रक्रिया अभी भी चल रही है, और हम देखते हैं कि इसकी मूल प्रक्रिया अब 1 (init) है।

वैकल्पिक रूप से आप अपनी स्क्रिप्ट सेट कर सकते हैं जैसे आप एक डेमन करेंगे। एक त्वरित खोज इस प्रतीत होता है उपयोगी लिंक को बदल देती है: http://onlamp.com/python/pythoncook2/solution.csp?day=1 । यदि आप उस दृष्टिकोण को लेना चाहते थे।

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