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

27

Eu estava tentando se reconectar a uma sessão tmux de execução demorada para verificar um aplicativo da web python. No entanto, 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 está perdida permanentemente e o que poderia ter causado isso? Ainda existe uma maneira de analisar o estado atual do processo python, gerado na sessão tmux e executando em 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
mhermans
fonte
O que tmux lsmostra?
jasonwryan
"falha ao conectar ao servidor: conexão recusada"
mhermans 16/06/12

Respostas:

40

Solução cortesia do Webfaction-support :

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 tmuxmapeamento:

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

Então, enviando o sinal e anexando obras:

killall -s SIGUSR1 tmux
tmux attach
mhermans
fonte
Estou usando byobu, que usa tmuxcomo back-end, e isso funcionou para mim depois que excluí acidentalmente o soquete de /tmp/tmux-<pid>. Obrigado!
Nicu Stiurca
7

Ausência terminal é um sinal de sessão desanexada. E todos os tmuxnomes de suas sessões podem ser encontrados assim:

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

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

lsof -n -p 16709 -a -U

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

poige
fonte
id -u532 e /tmp/tmux-532contém um único arquivo "padrão". Como isso me ajuda ainda mais?
mhermans
Tente tmux -S /tmp/tmux-532/default at, mas o nome do soquete padrão deve estar bem comtmux at . O que lsofdiz -version?
poige
O primeiro comando resulta em uma resposta "sem sessões". lsof -v saída .
mhermans
lsofcomo dado na minha resposta, cara. :)
poige 18/06/12
@hermans, eu quis dizer lsof-version da minha resposta, não precisamos da versão do software. :)
poige 18/06/12