web-dev-qa-db-ja.com

サーバー上のtmuxセッションに、他のユーザーと共有したり、セッションを切り離したりせずに接続できますか?

tmux aコマンドを使用してtmuxセッションに接続すると、セッションを友人と共有することになり、自分で作業することができなくなります(別のウィンドウで作業する必要があるため)。一方、tmux a -dに接続すると、友人のセッションが切断され、友人(または私たちの1人)がサーバーで作業できなくなります。

この機能がtmuxの「目的」に反する可能性があることは承知していますが、それでも質問する必要があると思いました。とにかく、私と私の友人がサーバー上で同じtmuxセッションを使用し、同時に異なるウィンドウで作業できるということはありますか?

5
vedang

「グループ化されたセッション」を使用する

セッションに接続する代わりに、-tnew-sessionに指定して「グループ化されたセッション」を作成できます。

tmux new-session -t 'original session name or number'

グループ化されたセッションには常に同じウィンドウがあります(新しい(閉じた)ウィンドウはグループ内のすべてのセッションにリンク(削除)されます)が、それぞれに現在および以前のウィンドウ値を含む独自のセッションオプションがあります。

あなたとあなたの友人がそれぞれ同じグループの一部であるセッションで作業している場合、それぞれが異なるウィンドウで作業できますが、同じウィンドウのセットに簡単にアクセスできます。同じウィンドウで作業することもできます(適切な)。

最初のセッションを作成します。

tmux                     # start initial session, lets say it gets the name '3'

各セッションを誰が使用するかを明確にするために、各セッションにニーモニック名を付けることをお勧めします。以下ではhismineを使用しますが、本名、ニックネーム、ログイン名、または同様に識別できるものに基づいたものを使用することをお勧めします。

この元のセッションの名前をhisに変更し、(元のセッションの外で)mineという名前のグループ化されたセッションを作成します。

tmux rename-session -t 3 his
tmux new-session -d -t his -s mine          # leave off -d to attach right away

「セッション」のクローンにアタッチする場合:

tmux attach-sesssion -t mine

友達が「セッション」のクローンに添付したい場合:

tmux attach-session -t his

どちらのセッションもkill-sessionでき、もう一方のセッションは存続します。ウィンドウが強制的に閉じられる前に、グループ内のすべてのセッションを強制終了する必要があります。

tmuxコマンドの略語

tmuxコマンドをスクリプト化する場合は、あいまいさを避け、「自己文書化」を支援するために、(上記のように)完全なコマンド名を使用するのがおそらく最善です。それらを入力している場合は、略語を使用できます。

  • new-sessionnew、またはnew-snew-senew-ses、…
  • rename-sessionrename、またはrename-srename-serename-ses、…
  • attach-sessionaat、…、attachattach-attach-s、…
  • kill-sessionkill-seskill-sess、…
13
Chris Johnsen