所以,我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.
Run Code Online (Sandbox Code Playgroud)
这不是必须跳过的最糟糕的箍,但为什么会发生,我该如何解决?
对于其客户端/服务器通信,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
Run Code Online (Sandbox Code Playgroud)
您可以确定客户端尝试使用的路径,如下所示:
tmux -L temp start\; info | grep path
Run Code Online (Sandbox Code Playgroud)
这将使用名为temp
而不是的套接字创建一个渐逝服务器default
,并显示它正在使用的套接字的路径.
归档时间: |
|
查看次数: |
5108 次 |
最近记录: |