इसके कई समाधान हैं।
बैकग्राउंड एंड डिसकस प्रोसेस
- दूरस्थ सर्वर के लिए ssh टर्मिनल खोलें।
scp
हमेशा की तरह स्थानांतरण शुरू करें ।
- Scp प्रक्रिया की पृष्ठभूमि ( Ctrl+ Z, फिर कमांड
bg
)।
- बैकग्राउंड प्रोसेस (
disown
) डिसाइड करें ।
- सत्र को समाप्त करें (
exit
) और प्रक्रिया दूरस्थ मशीन पर चलती रहेगी।
इस दृष्टिकोण के लिए एक नुकसान यह है कि stdout और stderr के लिए फ़ाइल डिस्क्रिप्टर में अभी भी आपके ssh सत्र के tty के संदर्भ होंगे। जब आप इस वजह से बाहर निकलने की कोशिश करते हैं तो टर्मिनल लटक सकता है। आप ~.
अपने ssh क्लाइंट को बंद करने के लिए टाइप करके इसके चारों ओर काम कर सकते हैं (यह कि भागने के क्रम को एक नई लाइन का पालन करना होगा ... यह भी देखें ~?
)। यदि आप जिस प्रक्रिया को छोड़ रहे हैं, वह stdout या stderr को लिखता है, तो समय से पहले बाहर निकल सकता है यदि tty बफर ओवरफिल हो जाता है।
एक स्क्रीन सत्र बनाएँ और इसे अलग करें
जीएनयू स्क्रीन का उपयोग एक दूरस्थ टर्मिनल सत्र बनाने के लिए किया जा सकता है, जिसे सत्र से बाहर करने के बाद आपको अलग किया जा सकता है और सर्वर पर चलता रह सकता है। फिर आप बाद की तारीख में सर्वर में प्रवेश कर सकते हैं और सत्र के लिए रिटैटच कर सकते हैं।
- Ssh पर दूरस्थ सर्वर में प्रवेश करें।
- , एक स्क्रीन सत्र प्रारंभ
screen -D -R <session_name>
।
scp
हमेशा की तरह स्थानांतरण शुरू करें ।
- तब Ctrl+ के साथ स्क्रीन सत्र को अलग करें ।Ad
- Ssh सत्र समाप्त करें (
exit
)
सत्र को फिर से जारी करने के लिए:
- Ssh पर दूरस्थ सर्वर में प्रवेश करें।
- स्क्रीन सत्र के लिए रीटचैच,
screen -D -R <session_name>
बिना Hangups के कमांड चलाएँ
उपयोग करके उत्तर देखें nohup
।
टास्क शेड्यूलर का उपयोग करें
यह सबसे अच्छा समाधान है यदि यह एक आवधिक प्रकार का कार्य है जिसे आप स्वचालित करना चाहते हैं।
उपयोग crontab
, at
या batch
हस्तांतरण अनुसूची के लिए।
-D -R
झंडे लगाने की शुरुआत क्यों कीscreen
। मैंने मैन पेज पढ़ा और इससे मुझे समझने में मदद नहीं मिली:-D -R Attach here and now. ...