2012-12-04 52 views
1

所以,我有我的本地機器上運行tmux會話連接到本地TMUX會議,但我只能連接到它(或看到有關它的信息),如果我ssh回到自己放在第一位:只能通過通過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. 

這還不是最壞的箍得跳通過,但爲什麼會發生,以及如何解決它?

回答

5

對於其客戶端/服務器通信,tmux在TMPDIR環境變量指定的目錄下使用一個已命名的套接字(在基於UID的子目錄中)。如果該環境變量未設置(或它是空的),則TMUX使用從paths.h_PATH_TMP定義的目錄;這往往是/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的套接字,並向您顯示它正在使用的套接字的路徑。

2

TMUX管理下在/ var /運行/ 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得到了什麼/運行/ TMUX的/ tmp/TMUX-USERID,並嘗試連接到由名字其中的一些插座,看看如果這是有利於您的問題(運行TMUX LS是一樣的運行TMUX - 大號默認LS)


如果一切都失敗了,完全分離tmux(關閉所有窗口並完全退出)然後rm/tmp/tmux-500/default可能是值得的,以查看當前問題是否有狀態。

+0

我在'/ var/run'目錄下沒有'tmux'目錄(我正在使用'tmux' 1.6)。 – rampion

+1

確認我們對此深感抱歉,我在尋找一個古代版的TMUX。看起來套接字已經遷移到/ tmp。 – hanumantmk

+0

'/ tmp/tmux-500 /'中的唯一條目是'default',但'tmux -L default ls'仍然給我'連接失敗:連接被拒絕。 – rampion