Sessão tmux perdida em pontos desconhecidos, causa e possível solução?

Sessão tmux perdida em pontos desconhecidos, causa e possível solução?

Eu estava tentando me reconectar a uma sessão tmux de longa duração para verificar um aplicativo da web python. Porém tmux attachafirma que não há sessão em execução e psmostra um tmuxprocesso (primeira linha), mas com um ponto de interrogação em vez do ptsnúmero.

O que isso significa --- esta sessão do tmux foi perdida permanentemente e o que poderia ter causado isso? Ainda existe uma maneira de ver o estado atual do processo python, gerado na sessão tmux e em execução pts/19(segunda linha)?

[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

Responder1

Solução cortesia doSuporte à Webfaction:

Como o processo ainda estava em execução, o problema era um soquete excluído, possivelmente causado por um diretório tmp eliminado.

De acordo com o tmuxmapa:

Se o soquete for removido acidentalmente, o sinal SIGUSR1 poderá ser enviado ao processo do servidor tmux para recriá-lo.

Portanto, enviar o sinal e anexar funciona:

killall -s SIGUSR1 tmux
tmux attach

Responder2

A ausência terminal é um sinal de sessão desvinculada. E todos tmuxos nomes de suas sessões podem ser encontrados assim:

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

- isso é meio dependente da distribuição. Quase independente de distribuição (e mais hardcore) seria:

lsof -n -p 16709 -a -U

onde 16709está o PID do tmux na sua listagem.

Responder3

É assimesta resposta anterior aquime ajudou (uau!). Eu estava tentando resolverexatamentea situação em que estou ligado a um Tmux - que posso ver em tmux ls,masem ps, posso ver tambémoutrotmux, que não está listado, tmux lsportanto não posso anexar a ele usando seu nome (tmux attach -t myOldbas)

Aqui estão os detalhes completos. Processos:

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

Agora,a parte lsof é o que realmente me ajudou--quando você faz isso porambos os processos, no meu caso 32257 (o que posso ver) e 9617 (o antigo)

/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

Porém quando usei no PID antigo, vi o seguinte

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

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

Perceber,como o último caminho do soquete é diferente? Felizmente, isso era tudo que eu precisava e executei o comando anexar com um soquete explícito:

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

e eu estava dentro!!

Responder4

Para pessoas que encontrarem este tópico posteriormente;

Se você usar sudopara executar um script ou algo assim, a tmuxsessão será listada no root, não no usuário que usou o sudo, pois as ações após o sudo são executadas no root.

Para remediar isso, use sudo tmux aou tmuxcomo root para recuperar o controle de sua sessão tmux.

informação relacionada