Eu estava tentando me reconectar a uma sessão tmux de longa duração para verificar um aplicativo da web python. Porém tmux attach
afirma que não há sessão em execução e ps
mostra um tmux
processo (primeira linha), mas com um ponto de interrogação em vez do pts
nú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 tmux
mapa:
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 tmux
os 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 16709
está 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 ls
portanto 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 sudo
para executar um script ou algo assim, a tmux
sessã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 a
ou tmux
como root para recuperar o controle de sua sessão tmux.