वियोज्य सत्र (tmux / screen) में वर्तमान कमांड ट्रांसफर करें


41

मैं वर्तमान में एक बैकअप चल रहा हूँ और यह अब की तरह अलग किए जाने योग्य एक को हस्तांतरित किए जाने की आवश्यकता tmuxहै या screen। क्या ऐसा करने का कोई तरीका है जब कमांड वर्तमान में चल रही है?

मैं कमांड को Ctrl+ दबाकर बैकग्राउंड भेज सकता हूं Zऔर fgकमांड जारी करके इसे वापस ला सकता हूं । लेकिन मुझे नहीं पता कि टर्मिनल से बाहर निकलने पर वह सत्र वापस जा सकता है या नहीं।


1
ऐसा करने का कोई तरीका नहीं है। आपको वियोज्य होने के लिए स्क्रीन (या अन्य) सत्र के भीतर से कमांड शुरू करना होगा।
दान डी।

जवाबों:


45

यह काम करता है, ज्यादातर समय:

आवश्यकताएँ: है reptyrऔर tmux/ screenस्थापित; आप अपने प्लेटफ़ॉर्म के आधार पर उन्हें ढूंढ पाएंगे apt-getया उनके साथ रह पाएंगे yum

  1. प्रक्रिया को निलंबित करने के लिए Ctrl+ Zका उपयोग करें ।

  2. पृष्ठभूमि के साथ प्रक्रिया फिर से शुरू करें bg

  3. के साथ पृष्ठभूमि प्रक्रिया की प्रक्रिया आईडी का पता लगाएं jobs -l

    आपको इसके समान कुछ दिखाई देगा:

    [1]+ 11475 Stopped (signal) yourprocessname
    
  4. वर्तमान माता-पिता (शेल) से नौकरी से वंचित कर दिया disown yourprocessname

  5. प्रारंभ tmux(पसंदीदा), या screen

  6. रेप्टियर के साथ tmux/ screenसत्र के लिए प्रक्रिया को रीटेट करें:

    reptyr 11475
    
  7. अब आप मल्टीप्लेक्स (डिफ़ॉल्ट Ctrl+ B, के Dलिए tmux, या Ctrl+ A, के Dलिए screen) को अलग कर सकते हैं , और SSH को डिस्कनेक्ट कर सकते हैं, जबकि आपकी प्रक्रिया tmux/ में जारी रहती है screen

  8. बाद में जब आप फिर से SSH से जुड़ते हैं, तो आप अपने मल्टीप्लेक्सर (जैसे tmux attach) से जुड़ सकते हैं ।


2
दुर्भाग्य से दौड़ने के बाद sudo reptyr 1430मुझे अभी भी मिला: "... [-] बच्चे में टेट खोलने में असमर्थ। 1430 को संलग्न करने में असमर्थ: अनुमति से इनकार किया"
डेरिल स्पिट्जर

3
आप अपने मामले में -L विकल्प जैसे reptyr -L 1430 के साथ कुछ सफलता पा सकते हैं।
cgseller

1
आवश्यक होने पर इसे चलाएं:echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
यान्हो

यह आर्क पर यो के माध्यम से भी है: archlinux.org/packages/community/i686/reptyr (उपयुक्त नहीं या यम)
टॉमी

1
बाद में bg, प्रक्रिया को पृष्ठभूमि में चलनाjobs चाहिए , इसलिए इसके Runningबजाय कहना चाहिए Stopped
जी-मैन का कहना है कि 'मोनिका की बहाली'

2

reptyr अच्छा है, लेकिन मुझे एक अनुमति त्रुटि मिली

$ reptyr 30622

[-] Unable to open the tty in the child.
Unable to attach to pid 30622: Permission denied

फिर मिला
-L Like '-l', but also redirect the child's stdio to the slave.

जो एक आकर्षण की तरह काम करता था

$ reptyr -L 30622
Opened a new pty: /dev/pts/4

2
जब मैंने जोड़ा तो -Lमुझे आपके जैसे संदेश मिला, Opened a new pty: /dev/pts/6लेकिन मेरा निलंबन toptmux में दिखाई नहीं दिया । मुझे यहां क्या समझ नहीं आ रहा है?
मेह्रद महमूदियन

-1

यदि आप कमांड को उपलब्ध हैं, तो आप इसके टर्मिनल से काम को अलग करने के लिए डिस्ऑन का उपयोग कर सकते हैं।

हालांकि इसे शुरू करने के लिए इसे नोह के साथ चलाना अधिक सुरक्षित है।


क्या आपके द्वारा इसे विस्तार दिया जा सकता है? आप इसके साथ शुरू करने का क्या मतलब है nohup? disowningएक प्रक्रिया कैसे काम करती है?
डारथ Android

टर्मिनल से पृष्ठभूमि प्रक्रिया (जिसे आप नियंत्रण-जेड के साथ पृष्ठभूमि में डालते हैं) को मिटा देते हैं, इसलिए टर्मिनल के चले जाने के बाद यह प्रक्रिया जारी रहेगी। आप नियंत्रण-जेड के बाद डिसाइड कर सकते हैं, यदि कमांड मिल जाए। हालांकि यह सिद्धांत में है और मज़बूती से काम नहीं कर सकता है। अगली बार यह आपके प्रोग्राम के सामने नूप को जोड़कर सुरक्षित है ताकि आप सुरक्षित रूप से टर्मिनल से बाहर निकल सकें।
जॉनशेन 64

जैसा कि उल्लेख किया गया है, मैंने 'अविश्वसनीय' पाया है। nohup वास्तव में बहुत बेहतर नहीं है। reptyr हालांकि एक समाधान हो सकता है। github.com/nelhage/reptyr
anastrophe

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

मुझे यहाँ एक संभावित अर्थ-संबंधी असहमति दिखाई देती है, और यह 'रिलोसेबल', 'पोज़िशन-इंडिपेंडेंट', 'डिटैच टमक्स' आदि जैसे कीवर्ड के लिए एक बहुत लोकप्रिय खोज परिणाम है, इसलिए मुझे आशा है कि आप नेक्रो-पोस्ट को माफ कर सकते हैं। क्या आपका मतलब "आप नहीं कर सकते" क्योंकि प्रोग्राम को रोकने और इसे फिर से शुरू करने के बीच अलग-अलग मेमोरी मैपिंग के कारण? एक बैकअप प्रोग्राम केवल यह पता करने के लिए जा रहा है कि फ़ाइल संरचना द्वारा दी जाने वाली फ़ाइलों का बैकअप क्या है, और फ़ाइल संरचना भविष्य में उस भौतिक मेमोरी को अनुपयुक्त बनाने के लिए मौजूद है। (हम इस अवसर के लिए वापस आ गए कि यह नहीं!)
जॉन पी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.