web-dev-qa-db-fra.com

Transférer la commande en cours vers une session détachable (tmux / screen)

J'effectue actuellement une sauvegarde qui doit maintenant être transférée sur une sauvegarde détachable, comme par exemple, tmux ou screen. Y a-t-il un moyen de faire cela lorsque la commande est en cours d'exécution?

Je peux envoyer la commande en arrière-plan en appuyant sur Ctrl+Z et le remettre en place en émettant une commande fg. mais je ne sais pas si cette session peut revenir en arrière lorsque je quitte le terminal.

35
Jürgen Paul

Cela fonctionne la plupart du temps:

Conditions préalables: avoir reptyret tmuxname __/screeninstallé; vous pourrez les trouver avec apt-get ou yumname__, en fonction de votre plate-forme.

  1. Utilisation Ctrl+Z suspendre le processus.

  2. Reprendre le processus en arrière-plan avec bgname__

  3. Recherchez l'ID de processus du processus d'arrière-plan avec jobs -l

    Vous verrez quelque chose de similaire à ceci:

    [1]+ 11475 Stopped (signal) yourprocessname
    
  4. Annulez le travail du parent actuel (Shell) avec disown yourprocessname

  5. Démarrez tmux(préféré) ou screenname__.

  6. Rattachez le processus à la session tmuxname __/screenavec reptyr:

    reptyr 11475
    
  7. Vous pouvez maintenant détacher le multiplexeur (valeur par défaut). Ctrl+BD pour tmuxname__, ou Ctrl+AD screenname__) et déconnectez SSH tant que votre processus se poursuit dans tmuxname __/screenname__.

  8. Plus tard, lorsque vous vous reconnecterez avec SSH, vous pourrez vous connecter à votre multiplexeur (par exemple tmux attach).

40
Ville

reptyr est bon mais j'ai une erreur de permission

$ reptyr 30622

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

Puis trouvé
-L Like '-l', but also redirect the child's stdio to the slave.

qui a fonctionné comme un charme

$ reptyr -L 30622
Opened a new pty: /dev/pts/4
1
guaka