একটি সেশন উপস্থিত থাকলে সংযুক্তি দিয়ে tmux কীভাবে শুরু করবেন


91

যদি আমি ব্যবহার করি

tmux attach

আমি একটি চলমান সেশনে সংযুক্ত করতে পারি তবে যদি কোনও সেশন চলছে না, তবে আমি কেবল ত্রুটিটি পেয়েছি

no sessions

কেউ যদি না চালাচ্ছে তবে আমি কীভাবে স্বয়ংক্রিয়ভাবে একটি নতুন অধিবেশন শুরু করতে পারি? কিছুটা এইরকম

tmux attach-or-create-new-session

উত্তর:


51

উত্তরটি অনেক সহজ। এটি কেবল আপনার ~/.tmux.confফাইলে রাখুন:

# if run as "tmux attach", create a session if one does not already exist
new-session -n $HOST

আপনি যদি চালনা করেন tmux attachএবং কোনও অধিবেশন থাকে, তবে এটি সেই অধিবেশনটিতে সংযুক্ত হবে (এটি ইতিমধ্যে সংযুক্ত কিনা বা না হোক)। যদি ইতিমধ্যে কোনও অধিবেশন না থাকে তবে এটি আপনার জন্য একটি তৈরি করে।


11
এটি একটি ঝরঝরে কৌশল, তবে একটি সতর্কতা রয়েছে: যদি tmuxতর্ক ছাড়াই আহ্বান করা হয় তবে এটি একটি নতুন অধিবেশন তৈরি করবে এবং তারপরে এটি আপনার লাইনে পৌঁছানোর সাথে সাথে একটি দ্বিতীয় অধিবেশন তৈরি করবে ~/.tmux.confপ্রথম সেশন tmux lsতৈরি করার পরে আপনি এই সমস্যাটি সম্পাদন করে দেখতে পারেন । অনুশীলনে, আপনি এটি আপনার ফাইলে রাখার পরে, আপনি আর কোনও যুক্তি ছাড়াই কল করতে পারবেন নাtmux
ব্রুনো পোলাকো

4
সুতরাং alias tmux="tmux attach"এই সমস্যাটি প্রতিরোধ করতে আপনাকে একটি উপনাম যুক্ত করতে হবে
07

@ ব্রুনো পোলাকো: অতিরিক্ত ফাঁকা টিএমউक्स অধিবেশনটি সার্বক্ষণিক চলমান (কীটি টাস্ক-তালিকায় এটি পরিপাটি মনে হয় না) এর চেয়ে বড় কেয়াট কী?
rubo77

@ রুবো 77 রিসোর্স কিছু লোকের যখন চালু হয় তখন কয়েকটি ডিফল্ট সরঞ্জাম, উইন্ডোজ, প্যানগুলি তৈরি হয় tmux
rovr138

129

আপনার সেশনটির নামকরণ যদি ঠিক থাকে তবে new-sessionকমান্ডটি দিয়ে কাজ করা সহজ :

tmux new-session -A -s main

যেখানে mainসেশন নামটি সংযুক্ত করা হবে বা প্রয়োজনে তৈরি হবে।

থেকে man tmux:

-Aপতাকা তোলে new-sessionমত আচরণ attach-sessionযদি সেশন-নাম আগে থেকেই আছে; এই ক্ষেত্রে, -Dমত আচরণ -dকরে attach-session

দয়া করে নোট করুন যে -Aবিকল্পটি আগের সংস্করণগুলির জন্য, 26 মার্চ 2013 থেকে tmux সংস্করণে1.8 প্রবর্তিত হয়েছিল tmux attach || tmux


10
অন্তর্নির্মিত কার্যকারিতা ব্যবহার করার জন্য এবং ম্যান ডক স্নিপেট সরবরাহ করার জন্য +1
এরি প্যাট্রিক

1
আমার ওরফে তালিকায়: alias "tmux-attach-or-create-main-session=tmux new-session -A -s main"। ভকভগক! ম্যানুয়াল পৃষ্ঠা: openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1
জেরোয়েন ওয়েয়ার্ট প্লুইমার্স

tmux: unknown option -- Aএটি কেবল সাম্প্রতিক সংস্করণগুলিতে উপলব্ধ বলে মনে হচ্ছে।
x অ্যাপল

এই পদ্ধতিটি আমি ব্যবহার করেছি তবে আপনি আর "tmux detach" ব্যবহার করতে পারবেন না। একটি বিদ্যমান সেশনটি সংরক্ষণ এবং প্রস্থান করতে আপনাকে শর্টকাট <ctrl> b - d ব্যবহার করতে হবে।
জেস

2
[ -z "$TMUX" ] && exec tmux new -As .এই আমি আমার ব্যবহার কি .bashrc
ryenus

30

সংযুক্তি যদি ত্রুটি দেয় তবে এটি একটি নতুন সেশন শুরু করবে:

tmux attach || tmux new

সুতরাং একটি উপাধি কাজটি করবে:

tm="tmux attach || tmux new"

এমনকি আপনি পরিবর্তন করে এটিকে খাটো করতে পারেন tmux attachজন্যtmux a
ব্রুনো Polaco

এটি কার্যকরী হওয়ার সময়, ওয়েসলি বাগের সমাধান একই জিনিসটি করতে tmux এর অন্তর্নির্মিত কার্যকারিতা ব্যবহার করে
এরি প্যাট্রিক

এটিকে পুরানো সংস্করণের সেরা উত্তর বলে মনে হয়, -এ-এর সূচনা হওয়ার আগে (যেমন v1.6)
ক্রিস্টোফার পিটারসন

3

আপনার সাথে নিম্নলিখিতগুলি যুক্ত করার বিষয়টি বিবেচনা করুন .bashrc

if [ -z "$TMUX" ]; then
    base_session='my_session'
    # Create a new session if it doesn't exist
    tmux has-session -t $base_session || tmux new-session -d -s $base_session
    # Are there any clients connected already?
    client_cnt=$(tmux list-clients | wc -l)
    if [ $client_cnt -ge 1 ]; then
        session_name=$base_session"-"$client_cnt
        tmux new-session -d -t $base_session -s $session_name
        tmux -2 attach-session -t $session_name \; set-option destroy-unattached
    else
        tmux -2 attach-session -t $base_session
    fi
fi

আপনি আমার ZSH রিসোর্স ফাইলে এই আমার ব্যবহার দেখতে পারেন আমার GitHub রেপো


2

ওয়েসলি বোয়ের উত্তরের উপর প্রসারিত করতে (যা লগইনগুলিতে .bashrc ব্যবহার করার সময় আমার জন্য ডাবল-নেস্টিং সেশন ছিল) এবং যেহেতু আমি প্রায়শই sudo -sসার্ভারগুলিতে ব্যবহার করি (যা আমার .bashrc আবার ডাবল নেস্টটি কর্তব্যকভাবে লোড করবে), এখানে এখানে রয়েছে আমার .bashrc এ আমার কী আছে:

if [ -z "$TMUX" ] && [ ${UID} != 0 ]
then
    tmux new-session -A -s main
fi

এটি একটি টিএমএক্স সেশনের জন্য পরীক্ষা করে এবং এটি নিশ্চিত করে যে নতুন সেশন তৈরি করার আগে বা বিদ্যমান বিদ্যমান নামটি সংযুক্ত করার আগে আপনি সুপারউজার নন main


1

ড্রইউ ফ্র্যাঙ্ক এখানে এর উত্তর দিয়েছে: https://superuser.com/questions/487363/tmux-equivalent-of-screen-r

আমি এখন এটির জন্য যে স্ক্রিপ্টটি ব্যবহার করছি তা এখানে রয়েছে (যদিও, টিএমউক্সের সাথে অন্য কোনও সমস্যার কারণে আমি পর্দায় ফিরে এসেছি) /somewhere/on/your/path/ttmuxবা শেল ফাংশন হিসাবে:

#!/bin/sh
# many thanks to Drew Frank: https://superuser.com/questions/487363/tmux-equivalent-of-screen-r
(tmux ls | grep -vq attached && tmux -2 at) || tmux -2

-2অপশন 256 রঙ টার্মিনাল সমর্থন অনুমান tmux করতে, তাই যারা আপনার অবস্থা জন্য উপযুক্ত নাও হতে পারে।



1

আমি @ সুপারমার্গিক উত্তরটি একটু উন্নত করেছি। আমি এই ব্লকটি আমার শীর্ষে রেখেছি.zshrc

if [[ $TMUX = "" ]]; then
  # try to reattach sessions
  tmux ls | grep -vq attached && TMUXARG="attach-session -d"
  exec eval "tmux -2 $TMUXARG"
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.