Se você utiliza TMUX para poder acessar (e criar) diversos ambientes de terminal no seu linux, você pode ter um problema. Se algumas sessões estiverem rodando no seu computador, enquanto o tmux é atualizado, você pode receber uma mensagem de erro ao tentar reconectar.
Por exemplo, o comando abaixo deveria mostrar todas as sessões ativas, mas retorna uma mensagem de erro. Mesmo se você já souber a número da sessão, tentar conectar diretamente com ela vai gerar o mesmo erro.
Isso basicamente diz a você, que você já tem um servidor tmux (antigo) rodando e o novo tmux não pode se conectar a ele porque eles não se entendem mais. Uma opção é sair de todas as suas sessões tmux existentes e começar uma nova usando a nova versão e tudo ficará bem. Contudo e se você não puder (ou quiser) matar a sua sessão?
Um hack bacana é mostrado a seguir. Você precisa identificar qual o ID da sua sessão. Use o comando pgrep mostrado abaixo. Ele irá fornecer o ID, que o meu caso é 32726.
Agora você deve rodar um comando que é criado dentro de /proc/.
Vamos listar o diretório /proc/32726 para ver o que tem lá. Basta dar um ls:
# ls /proc/32726/
attr cpuset limits net projid_map stat
autogroup cwd loginuid ns root statm
auxv environ map_files numa_maps sched status
cgroup exe maps oom_adj schedstat syscall
clear_refs fd mem oom_score sessionid task
cmdline fdinfo mountinfo oom_score_adj setgroups timers
comm gid_map mounts pagemap smaps uid_map
coredump_filter io mountstats personality stack wchan
root@arpia:/home/h3dema#
Veja que tem um comando exe neste diretório. É ele que precisamos. Basta dar o comando abaixo e você será conectado de novo na sua sessão, com a versão antiga.
Agora você pode terminar a sua sessão normalmente.
Por exemplo, o comando abaixo deveria mostrar todas as sessões ativas, mas retorna uma mensagem de erro. Mesmo se você já souber a número da sessão, tentar conectar diretamente com ela vai gerar o mesmo erro.
# tmux list-sessions
protocol version mismatch (client 8, server 7)
# tmux attach-session -t 0
protocol version mismatch (client 8, server 7)
Isso basicamente diz a você, que você já tem um servidor tmux (antigo) rodando e o novo tmux não pode se conectar a ele porque eles não se entendem mais. Uma opção é sair de todas as suas sessões tmux existentes e começar uma nova usando a nova versão e tudo ficará bem. Contudo e se você não puder (ou quiser) matar a sua sessão?
Um hack bacana é mostrado a seguir. Você precisa identificar qual o ID da sua sessão. Use o comando pgrep mostrado abaixo. Ele irá fornecer o ID, que o meu caso é 32726.
# pgrep tmux
32726
Agora você deve rodar um comando que é criado dentro de /proc/
# ls /proc/32726/
attr cpuset limits net projid_map stat
autogroup cwd loginuid ns root statm
auxv environ map_files numa_maps sched status
cgroup exe maps oom_adj schedstat syscall
clear_refs fd mem oom_score sessionid task
cmdline fdinfo mountinfo oom_score_adj setgroups timers
comm gid_map mounts pagemap smaps uid_map
coredump_filter io mountstats personality stack wchan
root@arpia:/home/h3dema#
/proc/32726/exe attach
Agora você pode terminar a sua sessão normalmente.
Comentários
Postar um comentário