क्या "स्क्रीन -D -R" के बराबर एक tmux है


13

मैं जानना चाहूंगा कि क्या tmuxव्यवहार करने का कोई तरीका है जैसे screen -D -Rकि मैं कह सकता हूं, पुट्टी में डिफ़ॉल्ट कमांड के रूप में कमांड है।

ये screenस्विच मेरे उपयोगकर्ता के लिए मौजूदा स्क्रीन सत्र को अलग कर देंगे (भले ही यह अभी भी सक्रिय था और कहीं और लॉग-इन किया गया था) और इसे वर्तमान सत्र के लिए रीटेट करें। इसके अलावा, इस मामले में कि कोई स्क्रीन सत्र मौजूद नहीं था, यह एक नया निर्माण करेगा।

मुझे tmux पसंद है और स्क्रीन पर स्पष्ट लाभ देख सकते हैं, लेकिन इस सुविधा का अस्तित्व वास्तव में सौदे को सील कर देगा।

tmux attach एक नया सत्र बनाने के लिए प्रतीत नहीं होता है अगर वहाँ एक नहीं है।

Tmux का मैन पेज कहता है:

यदि कोई सर्वर शुरू नहीं हुआ है, तो संलग्न-सत्र (अटैच) इसे शुरू करने का प्रयास करेगा; यह तब तक विफल रहेगा जब तक कॉन्फ़िगरेशन फ़ाइल में सत्र नहीं बनाए जाते।

बोल्ड में सेक्शन का क्या मतलब है? (मैं गोपनीय फ़ाइल में सत्र बनाने का एक उदाहरण नहीं ढूँढ सकता)।


मैन पेज से: " कॉन्फ़िगरेशन फ़ाइल tmuxकमांड का एक सेट है जो सर्वर के पहली बार चालू होने पर अनुक्रम में निष्पादित होता है। " - आप वास्तव में attachया new-sessionआपके पास एक पंक्ति के रूप में हो सकते हैं .tmux.conf
sr_

@sr_ खैर, जब सर्वर पहली बार शुरू new-sessionहुआ है तो वैसे भी हुआ होगा ...
क्रिस डाउन

बस एसओ पर यह (बंद) प्रश्न मिला। इसी तरह के जवाब के साथ एक ही सवाल। stackoverflow.com/q/3432536/168034
फुनेहे

जवाबों:


15

हाँ:

$ tmux attach -d || tmux new

-dआवश्यक है कि व्यवहार करें screen -D, अर्थात, हर किसी को अलग करें।

Ssh से कनेक्ट करें, फिर संलग्न करें या बनाएं कुछ इस तरह हो सकता है:

$ cat bin/stmux
#!/bin/sh
exec ssh -t $@ 'tmux attach -d || tmux new'

$ stmux my.remote.box

1
हां - यह सबसे प्रभावी तरीका है जो मैंने अनुरोध किया था। इसी तरह, new-sessionयदि आप इसे संपादित करना चाहते हैं और tmux सत्र के दौरान पुनः लोड करना चाहते हैं , तो मैं कॉन्फ़िगर फ़ाइल में अस्वीकृत कर देता हूं ।
गीब

4

tmux attachएक नया सत्र बनाने के लिए जब एक न हो, new-sessiontmux config फाइल में विकल्प का उपयोग करें । ~/.tmux.confयदि यह मौजूद नहीं है, तो फ़ाइल बनाएँ और जोड़ें

new-session

यह करने के लिए। इसके अलावा, मैं उर्फ tmuxकरने के लिए tmux attach:)


1
मैं देखना पसंद नहीं करते new-sessionमें ~/.tmux.confक्योंकि अगर मैं विन्यास कमांड के प्रयोग को फिर से लोड source-file ~/.tmux.conf(देखें यह ) एक नया सत्र शुरू किया जाएगा। हां, मैं इसे मार सकता हूं और फिर पिछले एक को जोड़ सकता हूं लेकिन यह थोड़ा कष्टप्रद है।
मिमीोया

3

आप इसे शेल फ़ंक्शन के साथ अनुकरण कर सकते हैं, यह किसी भी POSIX- अनुरूप शेल के लिए काम करना चाहिए:

tmux() {
    if [ "$#" -ge 1 ] && [ "$1" = -z ]; then
        shift
        command tmux detach 2>/dev/null
        command tmux attach "$@" || command tmux new-session "$@"
    else
        command tmux "$@"
    fi
}

अब यदि आप इसे लॉन्च करते हैं tmux -z, तो इसे उन कार्यों को करना चाहिए जिनकी आप तलाश कर रहे हैं।


2

यह मेरे लिए थोड़ा बेहतर काम करता है:

tmux new-session -AD -s <session-name>

1

मुझे लगता है कि यह मेरे लिए सबसे अच्छा काम करता है

if [[ -z $TMUX ]]; then
  tmux attach-session || tmux new-session
fi

ओपी में बोल्ड सेक्शन की व्याख्या कैसे की जाती है?
एन्थॉन

0

यदि आप इसे .shrc फ़ाइल के अंदर उपयोग कर रहे हैं या जैसा कि execमैं सुझाऊंगा

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