स्क्रीन पर पहले से चल रही प्रक्रिया को आगे बढ़ाना


222

मेरा कार्यालय नौकरी नियमित रूप से मुझे VNC के माध्यम से एक लिनक्स बॉक्स से जुड़ा हुआ देखता है।

कभी-कभी मैं कंसोल पर एक दूरस्थ नौकरी शुरू करता हूं, और बाद में महसूस करता हूं कि यह अपेक्षा से अधिक समय तक चलता है। (शुरू होना चाहिए कि एक स्क्रीन के तहत पहली जगह में ...)

मैं केवल VNC सत्र को खुला रखने के लिए अपने कार्य केंद्र को रात भर चालू नहीं रखना चाहता; मैं उस पहले से चल रहे रिमोट जॉब को स्क्रीन सेशन (रिमोट बॉक्स पर) में स्थानांतरित करना चाहूंगा, इसलिए मैं वर्कस्टेशन को पावर कर सकता हूं (और अगली सुबह फिर से कनेक्ट कर सकता हूं)।

यह कैसे किया जा सकता है, अगर बिल्कुल?


2
और यह एक द्वैध है, serverfault.com/questions/49877/… - लगता है कि यह नहीं किया जा सकता है।
पॉल डिक्सन




पटकथा पटकथा के लिए खोजें।
वाशु

जवाबों:


217

रेप्टियर पर एक नज़र डालें , जो वास्तव में ऐसा ही करता है। Github पेज पर सारी जानकारी है।

reptyr - "री-पाइटिंग" कार्यक्रमों के लिए एक उपकरण।

reptyr एक मौजूदा चल रहे कार्यक्रम को लेने और इसे एक नए टर्मिनल में संलग्न करने के लिए एक उपयोगिता है। Ssh पर एक लंबी चलने वाली प्रक्रिया शुरू की, लेकिन इसे छोड़ना होगा और इसे बाधित नहीं करना चाहिए? बस एक स्क्रीन शुरू करें, इसे हथियाने के लिए reptyr का उपयोग करें, और फिर ssh सत्र और घर पर सिर को मारें।

उपयोग

reptyr पीआईडी

"reptyr PID" आईडी PID के साथ प्रक्रिया को पकड़ लेगा और इसे आपके वर्तमान टर्मिनल से जोड़ देगा।

संलग्न करने के बाद, प्रक्रिया इनपुट से नए टर्मिनल में आउटपुट लिख देगी, जिसमें ^ C और ^ Z शामिल हैं। (दुर्भाग्य से, यदि आप इसे पृष्ठभूमि में रखते हैं, तो आपको अभी भी पुराने टर्मिनल में "बीजी" या "एफजी" चलाना होगा। यह आपके शेल को पैच किए बिना उचित तरीके से ठीक करने की संभावना है।)


22
अगर, मेरी तरह, आप ऊपर दिए गए लिंक को देखते थे और संक्षेप में स्रोत से प्रोग्राम को स्थापित करने पर विचार करते थे, तो दिल से लें: यह apt-getडेबियन सिस्टम पर बस दूर है।
mlissner

3
यह महान काम करता है, मैंने इसे पहले कैसे नहीं देखा है?
deed02392

3
यह कमाल का है! अगर मैं कर सकता तो मैं इसे 10 गुना बढ़ा देता! इसके अलावा, RedHat repos में भी रेप्टियर उपलब्ध है। इसे पाने के लिए बस 'यम इंस्टॉल' करें।
मार्क जे। बोबाक सेप

5
सबसे तुच्छ मामलों को छोड़कर काम नहीं करता है:Unable to attach. (This most commonly means that 11690 has a suprocesses)
मेहरदाद

2
कम से कम रूट के रूप में, आप उपयोग कर सकते हैंreptyr -T PID
क्रिस्टोफ़के

45

आप आसानी से ऐसा नहीं कर सकते। मैं यह सुझाव दूंगा कि आप कंसोल खोलने के बाद पहली चीज़ के रूप में स्क्रीन शुरू करें।

हालाँकि, आपकी वास्तविक समस्या के लिए, एक और चीज़ है जिसे आप आज़मा सकते हैं: टर्मिनल से अपना काम शुरू करने के बाद, इसे ctrl-z टाइप करके बैकग्राउंड करें bg। उसके बाद, यह माता-पिता के खोल से नौकरी अलग कर लें; बैश में तुम क्या चाहते हैं disown -h %<jobid>। उसके बाद, आप सुरक्षित रूप से टर्मिनल बंद कर सकते हैं और नौकरी चलती रहेगी।


3
इसने मेरे मामले के लिए बहुत अच्छा काम किया। reptyr और retty दोनों प्रक्रिया को हथियाने में विफल रहे, लेकिन मुझे बस एक टर्मिनल को बंद करने और चलाने के लिए प्रक्रिया को छोड़ने में सक्षम होना चाहिए।
STW

10
जानकारी के लिए: के बाद अस्वीकार प्रक्रिया आईएनजी यह किया जा सकता है reptyr अंदर एड स्क्रीन
एडम

1
इसने मेरे रनिंग प्रोग्राम को मार दिया :(
मेहरदाद

39

जैसा कि आप लिनक्स का उपयोग कर रहे हैं, नए लॉन्च किए गए स्क्रीन प्रोसेस के अंदर रिट्टी का उपयोग करने के बारे में क्या है?

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

HTH

चियर्स,


1
धन्यवाद का पता नहीं था, धन्यवाद। हालांकि, लंबे समय तक चलने वाली नौकरियों के लिए मेरे मन में एक उपकरण का उपयोग करने के लिए थोड़ा अनिच्छुक है, जो खुद को "बहुत हल्के से परीक्षण" के रूप में संदर्भित करता है। मैं ईयरल के समाधान के साथ जाता हूं।

1
जेंटू में कोई रिट्टी नहीं देखें
सर्गेई

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