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
tmuxsession no cliente. -
sshpara o servidor. - Iniciar
tmuxsession 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. -
sshnovamente. - Sua sessão
tmuxainda 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.