Nenhuma ferramenta do lado local pode fazer isso, devido ao que o servidor "vê":
- se você desconectar o SSH normalmente, o servidor perceberá isso imediatamente;
- se você simplesmente desaparecer (por exemplo, por uma reinicialização forçada), a conexão permanecerá aberta no lado do servidor até algum tipo de tempo limite (compare
ClientAlive*
opções, conceito keepalive TCP - consulte esta resposta para alguns detalhes).
Mesmo se você pretendesse usar tmux-resurrect
ou outra ferramenta no lado local, o servidor não sabe, não se importa. Ele encerrará seu código de longa duração, a menos que você use nohup
ou melhor…
Se puder, use tmux
(ou screen
) no servidor :
- Não insira
tmux
session no cliente. -
ssh
para o servidor. - Iniciar
tmux
session no servidor. - Inicie o código de longa execução lá.
- Desconecte-se de qualquer maneira: com ou sem graça, com ou sem desanexar do controle remoto
tmux
. -
ssh
novamente. - Sua sessão
tmux
ainda está lá (a menos que algo ruim tenha acontecido com o servidor nesse meio tempo); reconecte comtmux a
.
Eu uso tmux
desta maneira diariamente e acho que esse é o caminho certo. No meu laptop tmux
sessões duram por algumas horas no máximo, eu desligo todas as noites; mas tenho acesso a alguns servidores onde minhas tmux
sessões são executadas por meses. Quando estou escrevendo isso, em um deles há watch df -h
processo sendo executado literalmente por uma semana em uma sessão de tmux
iniciada há dois meses.