tmux "स्क्रीन -R" के बराबर?


10

tmux attachआदेश अधिक का एक संयोजन की तरह काम करता screen -rहै और screen -x- पहली यह सबसे हाल ही में करने के लिए संलग्न करने के लिए trys अलग सत्र, और फिर अगर कोई भी उपलब्ध है यह एक वर्तमान में संलग्न सत्र के लिए जोड़ देती है। मैं के व्यवहार का अनुकरण करना चाहता हूं screen -R: पहले एक अलग सत्र में संलग्न होने का प्रयास करें, फिर एक नया सत्र शुरू करें यदि कोई अलग सत्र नहीं था। Tmux में इसे प्राप्त करने का सबसे अच्छा तरीका क्या है?

जवाबों:


12

आईआरसी के जादूगरों से परामर्श करने के बाद मुझे विश्वास है कि इस व्यवहार का एक भी tmux कमांड नहीं है। सौभाग्य से, शेल का उपयोग करके अनुकरण करना काफी आसान है:

(tmux ls | grep -vq attached && tmux at) || tmux

माइनर को "सर्वर से कनेक्ट करने में विफल: सर्वर से कनेक्ट करने में विफल रहा" को संपादित करने की स्थिति में आउटपुट को नया सत्र शुरू करने की स्थिति में:(tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
l8nite

3

यह tmux मैनुअल में क्या कहता है के बावजूद:

             The target-session rules for attach-session are slightly
         adjusted: if tmux needs to select the most recently used session,
         it will prefer the most recently used unattached session.

ड्रू का जवाब ठीक से काम नहीं करेगा जैसे:

0: 1 windows (created Wed Nov  7 23:51:08 2012) [177x47]
1: 1 windows (created Wed Nov  7 23:51:33 2012) [177x47] (attached)

tmux atपिछले सत्र (# 1) से संलग्न होगा (भले ही यह सत्र अभी भी कहीं और संलग्न है)। यह कई tmux सत्र चलाने और केवल एक अलग करने के लिए संलग्न करने के पूरे विचार को बर्बाद कर देता है (एक आदर्श रोमिंग टर्मिनल बनाने के लिए mosh + tmux + iterm2 का उपयोग करने के लिए)।

एक अन्य दृष्टिकोण मैन्युअल रूप से गैर-संलग्न सत्र का चयन करना होगा:

tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`


अच्छी पकड़! प्रलेखन वास्तविक व्यवहार के साथ सिंक से बाहर है। मैंने इसके लिए एक बग रिपोर्ट बनाई ।
ड्रू फ्रैंक

एक पैच बाहर है जो इसे ठीक करता है, इसलिए अगली रिलीज तक इसे विज्ञापित के रूप में व्यवहार करना चाहिए।
ड्रू फ्रैंक

1.8 में पैच है?
मोमेरा

2

मैं एक समय में केवल दो tmux सत्र करता हूं, इसलिए मैं प्रत्येक टर्मिनल विंडो में ऐसा कुछ करता हूं।

टर्मिनल विंडो 0:

tmux attach -t 0 || tmux new

टर्मिनल विंडो 1:

tmux attach -t 1 || tmux new

2

इसने मेरे लिए सबसे अच्छा काम किया है:

if [ -z "$TMUX" ]; then
     (tmux ls | grep -vq attached && tmux at -t `tmux ls | grep -vm1 attached | cut -d: -f1`) || tmux new
fi

-यह उचित सत्र में संलग्न करने के लिए आवश्यक है।


1

व्हाट अबाउट

tmux attach || tmux new

या इसके बजाय फ़ाइल बनाएँ ~/.tmux.confअगर यह मौजूद नहीं है, और जोड़ें

new-session

यह इस तरह है कि यह एक नया सत्र बनाता है जब कोई नहीं होता है जब आप चलाते हैं tmux attach

यह भी tmuxएक उपनाम बनाने के लिए आसान हो सकता है tmux attach


पहला प्रस्ताव वर्तमान में संलग्न tmux सत्रों (स्क्रीन -x के समान) के साथ संलग्न होगा, जो कि कुछ है जो मैं बचना चाहता हूं। दूसरा प्रस्ताव इसी समस्या को प्रदर्शित करता है और "अतिरिक्त" tmux सत्र बनाने का अवांछनीय परिणाम भी होता है जब मैं विन्यास को पुनः लोड करने के लिए tmux source-file कमांड का उपयोग करता हूं।
ड्रू फ्रैंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.