1

そのため、ローカル マシンでセッションを実行していますが、最初に自分自身に戻ったtmux場合にのみ接続できます (または情報を表示できます) 。ssh

% tmux ls
failed to connect to server: Connection refused
% ssh localhost -t tmux ls
Password:
0: 2 windows (created Mon Nov 26 12:47:44 2012) [208x52] (attached)
Connection to localhost closed.

これはジャンプしなければならない最悪のフープではありませんが、なぜそれが起こっているのでしょうか?どうすれば修正できますか?

4

2 に答える 2

5

クライアント/サーバー通信のために、tmuxは、TMPDIR 環境変数で指定されたディレクトリの下にある名前付きソケット (UID ベースのサブディレクトリ内) を使用します。この環境変数が設定されていない (または空である) 場合、tmux_PATH_TMPはfrom で定義されたディレクトリを使用しpaths.hます。これはよくあり/tmpます。

注: 以下の「セッション」の使用は、 tmuxセッションではなく、ログイン セッションを指します。

私の推測では、あなたのsshセッションは共通の TMPDIR 値を共有している (おそらくまったく持っていない) のに対し、「通常の」セッションは異なる TMPDIR 値を使用していると思います。TMPDIR 値はセッションごとに異なるため、あるセッション タイプのクライアントは、別のセッション タイプで開始されたサーバーを直接「見る」ことができません (たとえば、クライアントは を使用しようとし/var/folders/random/directories/tmux-500/defaultますが、サーバーは をリッスンしています /tmp/tmux-500/default)。

この問題を解決するには、TMPDIR をsshセッションの通常の状態に合わせて調整するだけです。

TMPDIR=$(/usr/bin/ssh localhost -t 'echo $TMPDIR') && export TMPDIR

クライアントが使用しようとしているパスは、次のように判断できます。

tmux -L temp start\; info | grep path

tempこれにより、の代わりにという名前のソケットを使用してエバネッセント サーバーが作成され、使用しているソケットdefaultへのパスが表示されます。

于 2012-12-05T06:51:11.267 に答える
2

Tmux は/var/run/tmux /tmp/tmux-USERID の下でソケットを管理し、これらの各ソケットには名前が付けられています

例えば:

$ pwd
/tmp/tmux-2037
$ ls
default  foo
$ tmux -L foo ls
0: 1 windows (created Tue Dec  4 13:36:10 2012) [172x52]
$ tmux -L default ls
0: 1 windows (created Tue Nov 20 16:21:14 2012) [188x47]
$ tmux ls
0: 1 windows (created Tue Nov 20 16:21:14 2012) [188x47]

/var/run/tmux /tmp/tmux-USERID の下にあるものを見て、それらのソケットのいくつかに名前で接続してみて、それが問題の原因であるかどうかを確認してください (tmux ls を実行することは、tmux を実行することと同じです) -L デフォルト ls)


他のすべてが失敗した場合は、その tmux を完全に切り離し (すべてのウィンドウを閉じて完全に終了する)、 rm /tmp/tmux-500/default を実行して、現在の問題にステートフルなものがあるかどうかを確認する価値があります。

于 2012-12-04T17:29:59.053 に答える