Я недавно перешел с экрана на tmux (полученный через macports), так как мне больше нравится набор функций. Однако я не могу заставить tmux повторно подключаться из другого места, например, я могу отображать.
Дома на своем Mac я открою iTerm2, моя оболочка по умолчанию - zsh, и я начну сеанс tmux с tmux
. Я настраиваю все свои вертолеты, подключаюсь по ssh к нужным серверам и т. Д. И работаю какое-то время. Пора идти на работу.
- tmux отсоединяется.
Я приступаю к работе, где использую машину Windows XP. Я запускаю putty, ssh в свой Mac дома, пытаюсь прикрепить tmux
и получаю сообщение об ошибке:
no sessions
Кажется, я не могу определить, почему это могло произойти. Я не боюсь копаться в этом, но даже не знаю, с чего начать. Мысли?
P.S. Я уже удалил свой файл .tmux.conf, поэтому он использует конфигурацию по умолчанию.
tmux хранит свой сокет сервера в каталоге в каталоге, указанном переменной среды TMPDIR.
В вашей сессии GUI вы, вероятно, в конечном итоге получите TMPDIR, который указывает где-то ниже /var
(например, /var/folders/mV/mVip4IQ4EXOriTiLJmeSuk+++Tc/-Tmp-/
).
Когда вы входите в систему через SSH, вы, вероятно, в конечном итоге не получаете набор TMPDIR, поэтому tmux ищет в /tmp/
свой сокет.
В системе 10.6, вот мой TMPDIR с zsh / & # xfeff; Terminal и с 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 перед запуском вашего сервера (или установить для него что-то, что вы можете легко предсказать). [+1121]
Опция -U
в lsof
перечисляет файлы открытых сокетов, поэтому lsof -U | grep '^tmux'
перечислит все сокеты, используемые tmux . Если вы не вошли в систему как тот же пользователь, который запустил tmux , вам нужно будет использовать sudo
.
Последний столбец каждой строки - это имя файла. Файлы, которые вам нужны, начинаются с /
.
Строки, которые вы ищете, будут выглядеть примерно так:
tmux 1234 username 6u unix 0xffffffabcd123456 0t0 /private/var/folders/M8/M8tFwolmH08fOvJ+-35VI++++TM/-Tmp-/tmux-502/default
tmux 56789 username 6u unix 0xffffff123456789a 0t0 /private/tmp/tmux-502/default