কোনও টমাক্স সেশনে শেষ টার্মিনালটি প্রস্থান করার সময় এটি অন্যটিতে যেতে পারে?


12

আমি যখন কোনও টেমাক্স সেশনে শেষ টার্মিনালটি থেকে প্রস্থান করি তখন এটি স্বয়ংক্রিয়ভাবে tmux বন্ধ হবে এবং আমাকে প্যারেন্ট টার্মিনালে ফিরিয়ে দেবে। Tmux এর পরিবর্তে ইতিমধ্যে অন্যটিতে স্যুইচ করা কি ইতিমধ্যে বন্ধ হয়ে গেছে?

আমি যে কাজ করি সেগুলির জন্য আমি একটি নতুন নামযুক্ত অধিবেশন তৈরি করি, যেমন টিআরএক্সএক্সএক্স, ইমেল, স্ক্র্যাচ ইত্যাদি এবং আমি যখন তার একটির সাথে কাজ শেষ করি তখন আমি প্রতিটি টার্মিনাল বন্ধ করে প্রত্যেকটিতে প্রস্থান করি। আপনি যখন সেশনটির শেষ টার্মিনালে প্রস্থান করবেন tmux আপনাকে প্যারেন্ট টার্মিনালে ফিরে আসবে তবে এর পরিবর্তে অন্য যে কোনও ওপেন সেশনটিতে স্যুইচ করা সম্ভব তা কি আমাকে পুনরায় সংযুক্তি করতে হবে না?

এই প্রশ্নটি " একটি টিএমাক্স সেশনটি মেরে ফেলুন এবং অন্য একটি টিএমউक्स সেশনটি নির্বাচন করুন " এর অনুরূপ তবে আমি উইন্ডোটি মারা না দিয়ে প্রস্থানটি ব্যবহার করে আমার টার্মিনালগুলিকে সুন্দরভাবে বন্ধ করতে চাই।

উত্তর:


2

আমার কাছে সবচেয়ে কাছেরটি ছিল আমার লেখা টিএমक्स ফাংশন। আমি সাধারণত Ctrl+ টিপে শেলটি থেকে প্রস্থান Dকরি, তাই আমি + tmuxটিপানোর সময় প্রস্থান এবং সেশনগুলি স্যুইচ করার প্রোগ্রাম করেছি । আপনার মধ্যে নিম্নলিখিত রাখুন :[PREFIX] CtrlD.tmux.conf

bind C-d run-shell "                                        \
    if [ #{session_windows} -eq 1 ] &&                      \
       [ #{window_panes}    -eq 1 ] &&                      \
       [ #{pane_current_command}  = 'bash' ]; then          \
        if [ \$(tmux list-sessions | wc -l) -ge 2 ]; then   \
            tmux switch-client -ln;                         \
        fi; tmux kill-session -t \"#S\";                    \
    else                                                    \
        tmux display-message \"Ignoring kill session...\";  \
    fi;                                                     \
    "

হিট [PREFIX] Ctrl+ Dএবং এটি বর্তমান অধিবেশনটি থেকে প্রস্থান করে যদি (এবং কেবলমাত্র) এটিতে কেবল একটি শেল থাকে যা অন্য কোনও কমান্ড চালাচ্ছে না। এটি সম্ভব হলে অন্য সেশনে স্যুইচ করবে। আমি ব্যাশ শেলটি ব্যবহার করি, সুতরাং আপনার এটি ব্যবহার করা কিছুতে এটির দরকার হতে পারে।

PS: এটির ক্ষেত্রে, আমি বর্তমানে tmux 1.9a ব্যবহার করছি।


29

আমি এটি আমার সাথে যুক্ত করেছি ~/.tmux.conf:

set-option -g detach-on-destroy off

আমি যখন একটি সেশনে শেষ শেলটি ধ্বংস করি তখন এটি অন্য সক্রিয় অধিবেশনে স্যুইচ করে। সমস্ত সেশন বন্ধ হয়ে গেলে, tmuxপ্রস্থান করা হবে।


4
সঠিক উত্তর
এটিতে

দয়া করে প্রশ্নের পোস্টারটি আবেদন করুন।
রিচএন

এটি লক্ষণীয় গুরুত্বপূর্ণ যে tmux সেটিং আপডেট করে না এবং বিদ্যমান সেশনে ডিটাচ করে এবং পুনরায় সংযুক্ত করার সময় setting এটির প্রভাব ফেলতে আপনাকে টিএমক্স সার্ভারটি পুনরায় চালু করতে হবে।
nyi

2

আপনার এই লাইনগুলি যুক্ত করুন .bashrcএবং চেষ্টা করুন:

if which tmux 2>&1 >/dev/null 
then
    # start a new session if not exist
    test -z ${TMUX} && tmux

    # when quitting tmux, try to attach to other session
    while test -z ${TMUX}; do
        tmux attach || break
    done
fi

1
এটি প্রায় আমি যা চাই তা কি তবে এটি কি পরিবর্তন করা সম্ভব যে এটি কেবলমাত্র টিএমউক্সের ভিতর থেকে বেরিয়ে আসলেই চলে? যখনই আমি একটি নতুন টার্মিনাল খুলি এই স্ক্রিপ্টটি বিদ্যমান টিএমউक्स সেশনে সংযুক্ত হবে। আমি স্থানীয় স্টাফগুলির জন্য একটি টিএমউक्स সেশন করার চেষ্টা করি এবং তারপরে আমি এসএসএস করার সময় একটি নতুন টার্মিনাল খুলি: অন্য কোনও মেশিনে প্রবেশ করানো যেখানে আমি বাসা বাঁধার এড়াতে আমার আলাদা টিএমक्स সেশন করব session
ডেভিড

না, এই স্ক্রিপ্টটি নতুন tmux সেশন শুরু করবে যখনই আপনি একটি নতুন টার্মিনাল খুলবেন, বিদ্যমানটির সাথে সংযুক্ত করবেন না। আপনি আরও বিশদ সরবরাহ করতে পারেন, "টিএমউক্সের ভিতরে" বলতে কী বোঝায়?
cuonglm

1
ধরা যাক আমার এক্স এবং ওয়াই সেশন রয়েছে, যেখানে ওয়াইয়ের কেবল একটি টার্মিনাল খোলা আছে। আমি Y এর শেষ টার্মিনালে 'প্রস্থান' চালাচ্ছি যা অধিবেশনটি শেষ হওয়ার কারণ হবে। এই ক্ষেত্রে আমি চাই tmux সমাপ্তির পরিবর্তে X সেশনে স্যুইচ করুন। আমি যখনই কোনও নতুন টার্মিনাল চালু করি তখন কোনও টিএমএক্স সেশনটি সংযুক্ত / তৈরি হওয়া চাই না।
ডেভিড হল্ম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.