tmux没有重新附着

时间:2012-01-27 19:55:47

标签: macos zsh putty tmux iterm

我最近从使用屏幕切换到tmux(通过macports获得),因为我更喜欢功能集。但是,我似乎无法从备用位置重新连接tmux,就像我可以屏幕一样。

在我家的Mac上,我将打开iTerm2,我的默认shell是zsh,我将开始与tmux进行tmux会话。我将所有的吐痰设置,ssh到适当的服务器等,并工作了一段时间。是时候去上班了。 <C-a> d - tmux分离。

我开始工作,我使用的是Windows XP机器。我在家里把腻子,ssh打开我的mac,尝试tmux attach,然后收到错误信息:

no sessions

我似乎无法确定为什么会这样。我并不害怕深入研究,但甚至不知道从哪里开始。想法?

P.S。我已经删除了我的.tmux.conf文件,所以它使用的是默认配置。

4 个答案:

答案 0 :(得分:33)

在我的情况下,显然临时文件夹已被清除 This blog post帮助我恢复了“迷失”的会话:

  

我终于得到了解决方案:发送信号10强制tmux重新创建套接字。之后我可以再次运行tmux而不会失去我的会话:

$ killall -10 tmux

答案 1 :(得分:21)

tmux 将其服务器套接字存储在TMPDIR环境变量指定的目录下的目录中。

在您的GUI会话中,您最终可能会得到指向/var下某处的TMPDIR(例如/var/folders/mV/mVip4IQ4EXOriTiLJmeSuk+++Tc/-Tmp-/)。

当您通过SSH登录时,可能最终没有设置TMPDIR,因此 tmux /tmp/下查找其套接字。

在10.6系统上,这是我的TMPDIR zsh / 终端,以及 zsh / SSH:

% echo local: ${TMPDIR-unset}; ssh localhost 'echo remote: ${TMPDIR-unset}'
local: /var/folders/mV/mVip4IQ4EXOriTiLJmeSuk+++Tc/-Tmp-/
remote: unset

如果您知道需要为TMPDIR使用的值,可以在附加(或在会话本身之外运行其他 tmux 命令)时指定它:

TMPDIR=/var/folders/mV/mVip4IQ4EXOriTiLJmeSuk+++Tc/-Tmp-/ tmux attach

如果你不知道你的GUI会话正在使用的目录,你可以用这样的东西找到它(语法特定于 zsh ;它在/var/folders/下搜索名为-Tmp-的目录,由当前用户拥有):

echo /var/folders/**/*/-Tmp-(U/)

为避免将来出现问题,您可能需要在启动服务器之前取消设置TMPDIR(或将其设置为您可以更容易预测的内容)。

答案 2 :(得分:6)

-U的{​​{1}}选项列出了打开的套接字文件,因此lsof将列出 tmux 使用的所有套接字。如果您未以启动 tmux 的同一用户身份登录,则需要使用lsof -U | grep '^tmux'

每行的最后一列是文件的名称。您关注的文件以sudo开头。

您正在寻找的行看起来像这样:

/

答案 3 :(得分:1)

我对lsof的建议有一些变化,我一直在成功地“恢复”TMPDIR变量,这有助于解决一堆烦恼。我认为,优势在于,人们可以对lsof返回的内容更加严格,并且更容易解析出正确的值(在某些情况下,某些非典型字符的可能性很小,但仍然有效,输出)。

快速,单线:

$ lsof -Fn -d6 -aUc tmux | grep ^n | cut -c2-
/private/var/folders/_l/f_n8blps05xfnkw6fs3dcn_80000gp/T/tmux-502/default

我使用以下脚本(也可以是〜/ .bash_profile中的函数或我想的其他适当位置):

#!/bin/bash

if [[ -z "${TMPDIR}" ]]; then
  while read line; do
      case $line in
      n*) line="${line#n}"
          export TMPDIR="${line%%/tmux-$(id -u)/*}"
          ;;
      esac;
  done < <(lsof -Fn -d6 -aUc tmux)
else
    echo ">> \$TMPDIR already defined: $TMPDIR" 1>&2
fi

https://gist.github.com/jps3/769d50a6a7611949473b