Question Comment détacher une session tmux qui se trouve déjà dans un tmux?


J'ai ouvert une session tmux sur ma machine locale et ssh sur la machine distante. Après cela, j'ai tapé la commande "tmux attach" sur la machine distante, puis j'ai eu une session tmux distante sur ma session tmux locale.

Maintenant, je veux détacher la session de tmux distante, j'ai essayé

C-b d

mais il a détaché ma session tmux locale plutôt que la session distante.

Comment puis-je détacher le serveur tmux distant?


78
2018-02-24 03:10


origine




Réponses:


C-b C-b d

(en supposant les liaisons par défaut)

La première C-b est interprété par votre local tmux (car c'est le premier à voir toutes vos frappes). La deuxième C-b est une commande qui fait que votre tmux local envoie un C-b à son volet actif; cela a généré C-b arrive à la télécommande tmux. le  passe par le local tmux inchangé; quand il arrive à la télécommande tmux il déclenche la detach commander.

  1. Vous tapez C-b.
    Votre local tmux l'interprète comme la clé de préfixe; rien n'est envoyé aux processus fonctionnant sous le local tmux.
  2. Vous tapez C-b.
    Votre local tmux a-t-il lié à la send-prefix commander.
    1. Votre local tmux envoie un C-b au processus en cours d'exécution dans le volet actif (ssh).
    2. ssh le transmet (à travers sshd, etc.) au processus en cours d'exécution sur le côté distant (distant tmux).
      Votre télécommande tmux l'interprète comme la clé de préfixe; rien n'est envoyé aux processus exécutés sous la télécommande tmux.
  3. Vous tapez .
    Votre local tmux passe à travers normalement (depuis le second C-b fini une séquence de touches de commande complète pour le local tmux).
    Votre télécommande tmux at-il lié à detach-client; il détache le client actif.

C'est la même chose quand vous devez envoyer un C-b à tout programme s'exécutant dans un tmux session. Si tu voulais envoyer C-b à votre shell normal (par exemple parce que votre shell utilise une édition de style Emacs où C-b est backward-char (et vous n'aimez pas utiliser les touches fléchées)) vous devriez utiliser C-b  C-b pour obtenir un seul C-b à la coquille.


119
2018-02-24 04:21



Alternativement, j'ai souvent vu l'utilisation de C-a C-a pour sauter à la dernière fenêtre active. Dans de telles circonstances, essayez C-a a d se détacher Merci! - mkelley33
Remarque: le combo que je mentionne ci-dessus ne serait disponible que si le a la clé est liée au lieu de b dans le tmux.conf de l'utilisateur. - mkelley33
Mon tmux externe utilise C-a et la intérieure C-b, et pouvoir se détacher de l’intérieur, la seule chose qui fonctionne pour moi est C-a C-b-b d, mais je ne comprends pas pourquoi j'ai besoin de la seconde b - gcucurull


Une autre façon de le faire sans se soucier des raccourcis le rendant à la bonne instance de tmux est de taper tmux detach dans la session tmux distante.


36
2017-09-24 12:00





J'ai essayé la première réponse sans succès.

J'ai pu obtenir les résultats souhaités en procédant comme suit:

tmux attach

Je suis entré dans tmux et j'ai vu que l'autre session était toujours attachée

J'ai donc détaché ma session actuelle pour revenir à un shell: Ctrl + b; d

Puis j'ai publié ce qui suit: tmux attach -d 

Cela dit pour attacher à la session par défaut et détacher toutes les autres sessions actuellement attachées. Voir la page de manuel sous Clients et sessions

séance jointe [-dr] [-t-session-cible]                   (alias: attach)   Si vous lancez à l'extérieur de tmux, créez un nouveau client dans le terminal actuel et connectez-le à   session cible Si utilisé de l'intérieur, changez le client actuel. Si -d est spécifié, tout autre   les clients attachés à la session sont détachés.  -r signifie que le client est en lecture seule (seules les clés sont liées   à la commande detach-client avoir un effet)


4
2018-01-21 16:43





Si vous voulez essayer une autre option, suivez les étapes ci-dessous.

  1. détacher la session tmux actuelle avec Ctrl+b d . Donc, vous allez maintenant à la ligne de commande normale du terminal.
  2. Fait une tmux ls . Recherchez la session actuellement attachée
  3. Exécutez cette commande pour détacher la session déjà attachée tmux detach-client -s <attached_session_name>

0
2018-03-12 06:28