tmux session lost in unknown pts, cause and possible solution?

tmux session lost in unknown pts, cause and possible solution?

Я пытался повторно подключиться к долго работающему сеансу 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

решение1

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

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

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

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

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

killall -s SIGUSR1 tmux
tmux attach

решение2

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

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

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

lsof -n -p 16709 -a -U

где 16709находится PID tmux в вашем листинге.

решение3

Вот какэтот более ранний ответ здесьМне помогло (вау!). Я пытался решитьточноситуация, когда я подключен к одному Tmux, который я вижу в tmux ls,нов ps, я также вижудругойtmux, который не указан в списке, tmux lsпоэтому я не могу подключиться к нему, используя его имя (tmux attach -t myOldbas)

Вот полные подробности. Процессы:

71358     1849  9617  0 Sep04 pts/29   00:00:00 /bin/bash
71358     2528  9617  0 Aug31 pts/25   00:00:00 /bin/bash
71358     9617     1  0 Aug31 ?        00:08:55 tmux new -s myOld
71358     9618  9617  0 Aug31 pts/20   00:00:00 /bin/bash
71358    20199 33189  0 Sep16 pts/27   00:00:00 vim log
71358    20415 32257  0 Sep16 pts/30   00:00:00 /bin/bash
71358    24735 32257  0 Sep16 pts/33   00:00:00 /bin/bash
71358    32257     1  0 Sep16 ?        00:04:02 tmux new -s myses

Сейчас,бит lsof - это то, что мне действительно помогло--когда вы делаете это дляоба процесса, в моем случае 32257 (тот, который я вижу), и 9617 (старый)

/usr/sbin/lsof -n -p 32257 -a -U
COMMAND   PID             USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
..
tmux    32257 uzer.buzer          7u  unix 0xffff881ff0c73480      0t0 995795763 /tmp/uzer.buzer/tmux-71358/default

Однако, когда я использовал старый PID, я увидел следующее

/usr/sbin/lsof -n -p 9617 -a -U

tmux    9617 uzer.buzer          7u  unix 0xffff881ff0c73480      0t0 995795763 /tmp/tmux-71358/default

Уведомление,чем отличается последний путь сокета? К счастью, это все, что мне было нужно, и затем я выполнил команду присоединения с явным сокетом:

tmux -S /tmp/tmux-71358/default at

и я был внутри!!

решение4

Для тех, кто наткнется на эту ветку позже;

If you use sudo to run a script or something, the tmux session is listed under root, not under the user who used sudo, since actions following sudo are performed under root.

To remedy this, either use sudo tmux a, or tmux as root to regain control of your tmux session.

Связанный контент