2011-02-24 03:10:27 +0000 2011-02-24 03:10:27 +0000
128
128

それ自体がすでにtmuxに入っているtmuxセッションを切り離すには?

ローカルマシンでtmuxセッションを開き、リモートマシンにsshしてみました。この後、リモートマシンで “tmux attach "コマンドを入力して、ローカルマシンのtmuxセッションにリモートのtmuxセッションを取得しました。

C-b d

を試してみましたが、リモートの tmux セッションではなく、ローカルの tmux セッションが切り離されてしまいました。

0x1&

を試してみましたが、リモートの tmux セッションではなくローカルの tmux セッションを切り離してしまいました。

回答 (4)

172
172
172
2011-02-24 04:21:36 +0000
C-b C-b d

(デフォルトのバインディングを想定)

最初の C-b は、ローカルの tmux によって解釈されます。2 番目の C-b は、ローカルの tmux がアクティブなペインに C-b を送信するコマンドです; この生成された C-b はリモートの tmux に届きます。生成された C-b はリモートの tmux に到着します。 d はローカルの tmux を変更せずに通過し、リモートの tmux に到着すると、detach コマンドをトリガーします。

  1. C-b と入力します。
    ローカルの tmux はこれをプレフィックスキーとして解釈します。
  2. C-b** と入力します。
    お使いのローカルの tmux はこれを send-prefix コマンドにバインドしています。
  3. ローカルの tmux がアクティブなペイン (ssh) で実行しているプロセスに C-b を送信する。
  4. sshh_ はそれを (sshd などを介して) リモートエンドで実行しているプロセス (リモートの tmux) に転送します。
    リモートの tmux はこれをプレフィックスキーとして解釈します。
  5. あなたは d と入力しました。
    ローカルの tmux はこれを通常通り通過させます (2 番目の C-b は、ローカルの tmux のフルコマンドキーシーケンスを終了したため)。
    リモートの tmuxdetach-client にバインドされています。

これは、tmuxセッション内で実行されている任意のプログラムにC-bを送信する必要がある場合と同じです。通常のシェルにC-bを送りたい場合(例えば、シェルがEmacsスタイルの編集を使っていてC-bbackward-charになっている(矢印キーを使うのが嫌だから)など)、C-b** C-b を使ってC-b**を1つだけシェルに送る必要があります。

51
51
51
2011-09-24 12:00:19 +0000

キーバインドが正しい tmux インスタンスに届くかどうかを気にせずに行うもう一つの方法は、リモート tmux セッションに tmux detach と入力することです。

8
8
8
2013-01-21 16:43:49 +0000

最初の答えを試してみましたが成功しませんでした。

tmux attach

tmuxに入ってみたところ、他のセッションがまだ接続されていることがわかりました。

Ctrl + b; d

tmuxに入って、他のセッションがまだアタッチされているのを見ました

そこで、シェルに戻るために現在のセッションを切り離しました。クライアントとセッション**

attach-session [-dr] -t target-session tmux の外部から実行する場合は、現在のターミナルに新しいクライアントを作成し、それを target-session にアタッチします。内部から使用する場合は、現在のクライアントを切り替えます。内部から使用された場合、現在のクライアントを切り替えます。 _ -d が指定された場合、セッションに接続されている他のクライアントはすべて切り離されます。

0
0
0
2018-03-12 06:28:47 +0000

他のオプションを試したい場合は、以下の手順に従ってください

  1. Ctrl+b dで現在のtmuxセッションを切り離します。 これで、通常のターミナルのコマンドラインプロンプトに移動します。
  2. tmux ls を実行します。 現在接続されているセッションを探します。このコマンドを実行して、既に接続されているセッションを切り離す tmux detach-client -s <attached_session_name> .