ローカルマシンでtmuxセッションを開き、リモートマシンにSSHで接続しました。この後、リモートマシンで "tmux attach"コマンドを入力して、ローカルのtmuxセッションでリモートのtmuxセッションを得ました。
今、私はリモートのtmux sesstionをデタッチしたい、私が試した
C-b d
しかし、リモートのセッションではなく、ローカルのtmuxセッションを切り離しました。
リモートtmuxセッションを切り離すにはどうすればいいですか?
C-b C-b d
(デフォルトのバインディングを仮定)
最初のC-bは、ローカルのtmuxによって解釈されます(すべてのキーストロークが最初に表示されるため)。 2番目のC-bは、ローカルtmuxがアクティブペインにC-bを送信するようにするコマンドです。これで生成されたC-bはリモートに到着しますtmux。dは、ローカルのtmuxをそのまま通過します。リモートに到達するとtmuxになり、detach
コマンドが起動されます。
send-prefix
コマンドにバインドされています。detach-client
にバインドされています。アクティブなクライアントを切り離します。これはC-bをtmuxセッション内で実行中のプログラムに送信する必要がある場合と同じです。Cbを通常のシェルに送信したい場合(たとえば、シェルがEmacsスタイルの編集を使用している場合、Cbはbackward-char
(および矢印キーを使うのは嫌いです。)CbCbを使って単一のCbをシェルに渡す必要があるでしょう。 。
キーバインドを気にせずに正しいtmuxインスタンスにするもう1つの方法は、リモートtmuxセッションでtmux detach
を入力することです。
私は成功せずに最初の答えを試しました。
私は次のようにして欲しい結果を得ることができました:
tmux attach
私はtmuxに入り、他のセッションがまだ接続されているのを見ました
そこで私は現在のセッションを切り離してシェルに戻りました:Ctrl + b; d
それから私は以下を発行しました:tmux attach -d
これはデフォルトセッションにアタッチし、現在アタッチされている他のすべてのセッションをデタッチすることを意味します。 クライアントとセッションのmanページを参照してください。
attach-session[-dr] [-t target-session](別名:attach)tmuxの外部から実行する場合は、現在のディレクトリに新しいクライアントを作成します。端末とターゲットセッションにアタッチします。内側から使用する場合は、現在のクライアントを切り替えます。 -dが指定されている場合、セッションに接続されている他のすべてのクライアントは切り離されます。-rは、クライアントが読み取り専用であることを意味します)
他の方法を試したい場合は、以下の手順に従ってください。
Ctrl+b d
でデタッチします。これで、通常の端末のコマンドラインプロンプトに移動します。tmux ls
をしてください。現在接続されているセッションを探しますtmux detach-client -s <attached_session_name>