Transferir o comando atual para uma sessão destacável (tmux / screen)

31

Atualmente, estou executando um backup e agora ele precisa ser transferido para um item destacável, como tmux ou screen . Existe uma maneira de fazer isso quando o comando está sendo executado?

Eu posso enviar o comando ao fundo pressionando Ctrl + Z e colocá-lo de volta emitindo um comando fg . mas não sei se essa sessão pode voltar quando eu sair do terminal.

    
por Jürgen Paul 24.07.2013 / 04:59

3 respostas

33

Isso funciona na maioria das vezes:

(pré-requisitos: ter reptyr e tmux / screen instalado; você poderá encontrá-los com o apt-get ou yum, dependendo da sua plataforma)

  1. Use Ctrl-Z para suspender o processo.

  2. Retomar o processo em segundo plano com bg

  3. Encontre o ID do processo em segundo plano com jobs -l

    Você verá algo parecido com isto:

    [1]+ 11475 Stopped (signal) yourprocessname
    
  4. Desaprove o trabalho do pai atual (shell) com disown yourprocessname

  5. Inicie tmux (preferencial) ou screen .

  6. Recoloque o processo na sessão do tmux / screen com o reptyr:

    reptyr 11475
    
  7. Agora você pode desanexar o multiplexador (padrão Ctrl-B D para o tmux ou Ctrl-A D para a tela) e desconectar o SSH enquanto o processo continua no tmux / screen.

  8. Mais tarde, quando você se conectar novamente com o SSH, poderá anexar ao seu multiplexador (por exemplo, tmux attach ).

por 01.05.2014 / 17:49
1

reptyr é bom, mas recebi um erro de permissão

$ reptyr 30622

[-] Unable to open the tty in the child.
Unable to attach to pid 30622: Permission denied

Encontrado em -L Like '-l', but also redirect the child's stdio to the slave.

que funcionou como um charme

$ reptyr -L 30622
Opened a new pty: /dev/pts/4
    
por 19.10.2017 / 14:07
-1

você pode usar o disown para desanexar o trabalho de seu terminal, se esse comando estiver disponível.

é mais seguro executá-lo com o nohup para começar.

    
por 24.07.2013 / 05:16