कैसे एक tmux सत्र है कि पहले से ही एक tmux में अलग करने के लिए?


118

मैंने अपनी स्थानीय मशीन पर एक tmux सत्र खोला है, और दूरस्थ मशीन के लिए ssh। इसके बाद, मैंने रिमोट मशीन पर कमांड "tmux अनुलग्नक" टाइप किया, फिर मुझे अपने स्थानीय tmux सत्र पर दूरस्थ tmux सत्र मिला।

अब मैं दूरस्थ tmux sesstion को अलग करना चाहता हूं, मैंने कोशिश की है

C-b d

लेकिन इसने रिमोट के बजाय मेरे स्थानीय tmux सत्र को अलग कर दिया।

मैं दूरस्थ tmux sesstion को कैसे अलग कर सकता हूं?

जवाबों:


162
C-b C-b d

(डिफ़ॉल्ट बाइंडिंग मानकर)

पहले Cb की व्याख्या आपके स्थानीय tmux द्वारा की गई है (क्योंकि यह आपके सभी कीस्ट्रोक्स को देखने वाला पहला है)। दूसरा Cb एक कमांड है जो आपके स्थानीय tmux को Cb को उसके सक्रिय फलक पर भेजने का कारण बनता है ; यह उत्पन्न Cb दूरस्थ tmux पर आता है । स्थानीय से होकर गुजरता है tmux अपरिवर्तित; जब यह दूरस्थ tmux को मिलता है तो यह detachकमांड को ट्रिगर करता है ।

  1. आप Cb टाइप करें ।
    आपका स्थानीय tmux इसे उपसर्ग कुंजी के रूप में व्याख्या करता है; स्थानीय tmux के तहत चलने वाली प्रक्रियाओं के लिए कुछ भी नहीं भेजा जाता है ।
  2. आप Cb टाइप करें ।
    आपके स्थानीय tmux के पास send-prefixकमांड के लिए बाध्य है ।
    1. आपका स्थानीय tmux सक्रिय फलक ( ssh ) में चल रही प्रक्रिया को Cb भेजता है ।
    2. ssh आगे ( sshd के माध्यम से , आदि) दूरस्थ अंत (दूरस्थ tmux ) पर चल रही प्रक्रिया के लिए ।
      आपका रिमोट tmux इसे उपसर्ग कुंजी के रूप में व्याख्या करता है; दूरस्थ tmux के तहत चल रही प्रक्रियाओं के लिए कुछ भी नहीं भेजा जाता है ।
  3. आप d टाइप करें ।
    आपका स्थानीय tmux इसे सामान्य रूप से गुजरता है (चूंकि दूसरे Cb ने स्थानीय tmux के लिए पूर्ण कमांड कुंजी अनुक्रम समाप्त कर दिया है )।
    आपका रिमोट tmux इसे करने के लिए बाध्य है detach-client; यह सक्रिय क्लाइंट को अलग कर देता है।

यह वही है जब आपको tmux सेशन के अंदर चल रहे किसी प्रोग्राम में Cb भेजने की आवश्यकता होती है । यदि आप Cb को अपने सामान्य शेल में भेजना चाहते हैं (जैसे कि आपका शेल Emacs- शैली के संपादन का उपयोग कर रहा है, जहाँ Cb है (और आप तीर कुंजियों का उपयोग करना नापसंद करते हैं)) तो आपको Cb Cb का उपयोग करने के लिए शेल में एक Cb का उपयोग करना होगा ।backward-char


8
वैकल्पिक रूप से, मैंने अक्सर C-a C-aअंतिम सक्रिय विंडो पर कूदने का उपयोग देखा है । ऐसी परिस्थितियों C-a a dमें अलग करने की कोशिश करें। धन्यवाद!
mkelley33

2
नोट : ऊपर उल्लिखित कॉम्बो केवल तभी उपलब्ध होगा जब उपयोगकर्ता के tmux.conf के aबजाय कुंजी bबंधी हो।
mkelley33

मेरे बाहरी tmux का उपयोग करता है C-aऔर आंतरिक एक C-b, और भीतर से अलग करने में सक्षम होने के लिए केवल एक चीज जो मेरे लिए काम करती है C-a C-b-b d, लेकिन मुझे नहीं लगता कि मुझे दूसरे की आवश्यकता क्यों हैb
Guillem Cucurull

बस लोगों को इस विकल्प को सक्षम करने की अनुमति देने के लिए एक अनुस्मारक यदि उनके पास डिफ़ॉल्ट कीबाइंडिंग नहीं है: आप :कमांड को tmux कमांड को अंतःक्रियात्मक रूप से चलाने के लिए चला सकते हैं , और फिर bind-key -n j send-prefixकमांड के माध्यम से एक बंधन स्थापित कर सकते हैं । इस उदाहरण में मैं jउपसर्ग भेजने के लिए बाध्य करना चाहता था । अन्यथा, डेव के उत्तर का उपयोग करें: tmux detachकमांड का उपयोग करें ।
nealmcb

46

tmux detachदूरस्थ tmux उदाहरण में टाइप करने के लिए इसे बनाने वाली कीबाइंडिंग के बारे में चिंता किए बिना इसे करने का एक और तरीका है दूरस्थ टॉक्सएक्स सत्र में टाइप करना ।


8

मैंने बिना सफलता के पहले उत्तर की कोशिश की।

मैं निम्नलिखित करके परिणाम प्राप्त करना चाहता था:

tmux attach

मैंने tmux में प्रवेश किया और देखा कि अन्य सत्र अभी भी संलग्न था

इसलिए मैंने अपने वर्तमान सत्र को एक शेल में वापस लाने के लिए अलग कर लिया: Ctrl + b; d

तब मैंने निम्नलिखित जारी किया: tmux attach -d

यह डिफ़ॉल्ट सत्र से जुड़ने के लिए कहता है, और वर्तमान में संलग्न सभी अन्य सत्रों को अलग कर सकता है। ग्राहक और सत्र के अंतर्गत मैन पेज देखें

संलग्न-सत्र [-dr] [-t लक्ष्य-सत्र] (उपनाम: संलग्नक) यदि बाहरी tmux से चलाया जाता है, तो वर्तमान टर्मिनल में एक नया क्लाइंट बनाएं और इसे लक्ष्य-सत्र में संलग्न करें। यदि अंदर से उपयोग किया जाता है, तो वर्तमान क्लाइंट को स्विच करें। यदि -d निर्दिष्ट किया जाता है, तो सत्र से जुड़े किसी भी अन्य क्लाइंट को अलग कर दिया जाता है। -r यह दर्शाता है कि ग्राहक केवल-पढ़ने के लिए है (केवल डिटैच-क्लाइंट कमांड के लिए बाध्य की गई कोई भी प्रभाव है)


0

यदि आप नीचे दिए गए चरणों का पालन करने के लिए किसी अन्य विकल्प का प्रयास करना चाहते हैं

  1. वर्तमान tmux सत्र को अलग करें Ctrl+b d। ताकि अब आप सामान्य टर्मिनल कमांड लाइन प्रॉम्प्ट पर जाएं।
  2. ए करें tmux ls। वर्तमान में संलग्न सत्र के लिए देखें
  3. पहले से संलग्न सत्र को अलग करने के लिए इस कमांड को निष्पादित करें tmux detach-client -s <attached_session_name>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.