Execução remota de código após reinicialização do tmux

3

Eu li sobre tmux-resurrect , mas ainda não está claro para mim se posso fazer o seguinte:

  1. inicie tmux sessão
  2. ssh para o servidor remoto
  3. inicie o código de longa execução no host remoto
  4. matar o servidor tmux (por exemplo, reinicialização da máquina local)
  5. restaurar & reconecte a sessão do tmux (por exemplo, usando tmux-resurrect )
  6. continue monitorando o código que eu iniciei no servidor remoto

Preciso usar nohup na etapa 3? ou pode tmux-resurrect (ou alguma outra ferramenta) cuidar disso?

    
por MichaelSB 24.01.2018 / 21:31

1 resposta

2

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 :

  1. Não insira tmux session no cliente.
  2. ssh para o servidor.
  3. Iniciar tmux session no servidor.
  4. Inicie o código de longa execução lá.
  5. Desconecte-se de qualquer maneira: com ou sem graça, com ou sem desanexar do controle remoto tmux .
  6. ssh novamente.
  7. Sua sessão tmux ainda está lá (a menos que algo ruim tenha acontecido com o servidor nesse meio tempo); reconecte com tmux 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.

    
por 24.01.2018 / 22:58

Tags