Сеанс tmux потерян в неизвестных очках, причина и возможное решение?

27

Я пытался повторно присоединиться к длительной сессии tmux, чтобы проверить веб-приложение на python. Однако tmux attachутверждает, что нет запущенного сеанса, и psпоказывает tmuxпроцесс (первая строка), но с вопросительным знаком вместо ptsномера.

Что это значит - потерян ли этот сеанс tmux навсегда и что могло его вызвать? Есть ли еще способ посмотреть на текущее состояние процесса python, порожденного в сеансе tmux и запущенного в pts/19(вторая строка)?

[mhermans@web314 ~]$ ps -ef | grep mhermans
mhermans 16709     1  0 Mar04 ?        00:26:32 tmux
mhermans  8526 16710  0 Mar04 pts/19   00:20:04 python2.7 webapp.py
root      9985  6671  0 10:18 ?        00:00:00 sshd: mhermans [priv]
mhermans 10028  9985  0 10:18 ?        00:00:00 sshd: mhermans@pts/16
mhermans 10030 10028  0 10:18 pts/16   00:00:00 -bash
mhermans 16247 10030  6 10:28 pts/16   00:00:00 ps -ef
mhermans 16276 10030  0 10:28 pts/16   00:00:00 grep mhermans
mhermans 16710 16709  0 Mar04 pts/19   00:00:00 -bash
mhermans 16777 16709  0 Mar04 pts/21   00:00:00 -bash
mhermans
источник
Что tmux lsпоказывает?
jasonwryan
«Не удалось подключиться к серверу: соединение отказано»
mhermans

Ответы:

40

Решение предоставлено Webfaction-поддержкой :

Поскольку процесс все еще работал, проблема заключалась в удаленном сокете, возможно, вызванном очищенным каталогом tmp.

Согласно tmuxкарте:

Если сокет был случайно удален, сигнал SIGUSR1 может быть отправлен процессу сервера tmux для его воссоздания.

Итак, отправка сигнала и прикрепление работ:

killall -s SIGUSR1 tmux
tmux attach
mhermans
источник
Я использую byobu, который использует tmuxв качестве бэкэнда, и это сработало для меня после того, как я случайно удалил сокет из /tmp/tmux-<pid>. Благодарность!
Нику Стирка,
7

Отсутствие терминала является признаком отдельного сеанса. И все ваши tmuxимена сессий можно найти так:

ls $TMP/tmux-$(id -u) или ls /var/run/tmux/tmux-$(id -u)

- это своего рода дистро-зависимость. Почти независимый дистрибутив (и более хардкорный) будет:

lsof -n -p 16709 -a -U

где 16709PID tmux в вашем списке.

poige
источник
id -uдает 532и /tmp/tmux-532содержит один файл "по умолчанию". Как это поможет мне дальше?
Мерманс
Попробуйте tmux -S /tmp/tmux-532/default at, но имя сокета по умолчанию должно быть в порядке с tmux at. Что говорит lsof-версия?
poige
Первая команда приводит к ответу «нет сеансов». lsof -v вывод .
Мерманс
lsofкак указано в моем ответе, чувак. :)
poige
@mhermans, я имел в виду lsof-версию моего ответа, нам не нужна его версия программного обеспечения. :)
poige