ssh “tmux a || tmux ”funciona às vezes?

Sep 29 2020

Este comando funciona sempre (com sh ou bash):

ssh -t HOST sh -c "tmux a 2>/dev/null || tmux"

Estes falham na metade das vezes:

ssh -t HOST -- "tmux a 2>/dev/null || tmux"
ssh -t HOST "tmux a 2>/dev/null || tmux"

com um erro do tmux, server exited unexpectedlyou lost server. (Ao testar, não havia sessão tmux aberta, então ele sempre executava ambos os comandos.)

Por que eles falham e falham apenas às vezes, mas nem sempre?

Respostas

laktak Sep 30 2020 at 03:42

Acho que encontrei a resposta:

attach-session [-dErx] [-c working-directory] [-t target-session]
              (alias: attach)
        If no server is started, attach-session will attempt to start it; this will 
        fail unless sessions are created in the configuration file.
  • tmux a não apenas tenta conectar, mas também inicia um servidor tmux (que falha e começa a desligar).
  • o tmuxcomando tenta criar uma nova sessão. Às vezes, o processo do servidor tmux aainda está lá, então ele se comunica com esse servidor
  • finalmente, o processo do servidor sai e tmuxfalha com a server exited unexpectedlymensagem.