2011-02-24 03:10:27 +0000 2011-02-24 03:10:27 +0000
128
128

Comment détacher une session de tmux qui elle-même est 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 obtenu une session tmux distante sur ma session tmux locale.

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

C-b d

mais cela a détaché ma session tmux locale plutôt que celle distante.

_Comment puis-je détacher la session tmux distante ?

Réponses (4)

172
172
172
2011-02-24 04:21:36 +0000
C-b C-b d

(en supposant des liaisons par défaut)

Le premier C-b est interprété par votre tmux local (car il est le premier à voir toutes vos frappes). Le second C-b est une commande qui fait que votre tmux local envoie un C-b à son panneau actif ; ce C-b généré arrive au tmux distant. Le d passe à travers le tmux local sans changement ; lorsqu'il arrive au tmux distant, il déclenche la commande detach.

  1. Vous tapez C-b.
    Votre tmux local l'interprète comme la clé du préfixe ; rien n'est envoyé aux processus qui tournent sous le tmux local.
  2. Vous tapez C-b.
    Votre tmux local est lié à la commande send-prefix.
  3. votre tmux local envoie un C-b au processus s'exécutant dans le volet actif (ssh).
  4. ssh le fait suivre (par sshd, etc.) au processus s'exécutant sur l'extrémité distante (remote tmux).
    Votre remote tmux l'interprète comme la clé de préfixe ; rien n'est envoyé aux processus s'exécutant sous le remote tmux.
  5. Vous tapez d.
    Votre tmux local le passe normalement (puisque le deuxième C-b a terminé une séquence complète de clés de commande pour le tmux local).
    Votre tmux distant est lié à detach-client ; il détache le client actif.

C'est la même chose que lorsque vous devez envoyer un C-b à tout programme s'exécutant dans une session tmux. Si vous voulez 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 que vous n'aimez pas utiliser les touches fléchées)), vous devez utiliser C-b** C-b pour obtenir un seul C-b** au shell.

51
51
51
2011-09-24 12:00:19 +0000

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

8
8
8
2013-01-21 16:43:49 +0000

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

J'ai pu obtenir les résultats que je voulais en faisant ce qui suit :

tmux attach

J'ai entré 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 émis ce qui suit : tmux attach -d

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

attach-session [-dr] -t target-session Si vous l'exécutez depuis l'extérieur de tmux, créez un nouveau client dans le terminal actuel et attachez-le à target-session. S'il est utilisé de l'intérieur, changez le client actuel. Si -d est spécifié, tous les autres clients attachés à la session sont détachés._ -r signifie que le client est en lecture seule (seules les clés liées à la commande detach-client ont un effet)

0
0
0
2018-03-12 06:28:47 +0000

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

  1. Détachez la session tmux actuelle avec Ctrl+b d . De sorte que vous allez maintenant à l'invite de ligne de commande normale du terminal.
  2. Faites un tmux ls . Cherchez la session qui est actuellement attachée
  3. Exécutez cette commande pour détacher la session déjà attachée tmux detach-client -s <attached_session_name> .