tmux: session partagée, un utilisateur dans un volet, un autre dans un autre volet, deux curseurs différents

17

J'ai décidé d'essayer tmux: j'ai lu les documents et fait des recherches sur Google, essayant de trouver un moyen pour que deux utilisateurs partagent une session, chacun avec un curseur différent.

Cependant, donner 777 autorisations au socket, ou créer un groupe, chgrping le socket et y ajouter les deux utilisateurs, semble laisser ce même socket être utilisé pour partager une session avec un seul curseur: les deux utilisateurs peuvent écrire, mais toujours dans le même position du curseur.

En ce moment, les deux utilisateurs sont sur le même serveur domestique via ssh, et l'idée est de pouvoir avoir:

  • Un terminal dans un, disons, volet gauche, où je peux taper des commandes
  • Un autre terminal dans un volet droit, où je peux voir un autre utilisateur saisir des commandes dans son propre terminal
  • La même chose pour l'autre utilisateur

Ce que je fais en ce moment utilise deux sessions (non partagées) et une script -fet tail -fcombinaison qui fonctionne un peu pour la lecture de l'autre de coups clés, mais je compte il y a probablement une certaine façon de le faire en utilisant tmux capacités de partage.

Existe-t-il un moyen de faire fonctionner cette idée avec le support d'écriture dans le terminal de l'autre?

Quelle est la meilleure façon de procéder?

ferhtgoldaraz
la source
Cela devrait aider unix.stackexchange.com/questions/2523/…
clement le
@clement Non, cela fait que deux utilisateurs voient exactement la même chose; c'est-à-dire qu'il n'y a qu'un seul curseur, et les deux sont dans le volet droit ou les deux sont dans le volet gauche. Mais merci quand même
ferhtgoldaraz

Réponses:

20

Cette question est un peu ancienne, mais je cherchais quelque chose de similaire et je l'ai trouvée ici . Il crée une deuxième session qui partage des fenêtres avec la première, mais possède sa propre vue et son propre curseur.

tmux new-session -s alice
tmux new-session -t alice -s bob

Si le partage se passe entre deux comptes d'utilisateurs, vous pouvez toujours avoir à gâcher avec des autorisations (qui il semble que vous aviez déjà travailler).

Edit: Comme suggéré, une citation d' une autre réponse :

Tout d'abord, ajoutez un groupe pour les utilisateurs de tmux

export TMUX_GROUP=tmux
addgroup $TMUX_GROUP

Créez un répertoire avec le groupe défini sur $ TMUX_GROUP et utilisez le bit setgid pour que les fichiers créés dans le répertoire aient automatiquement le groupe défini sur $ TMUX_GROUP.

mkdir /var/tmux
chgrp $TMUX_GROUP /var/tmux
chmod g+ws /var/tmux

Assurez-vous ensuite que les utilisateurs qui souhaitent partager la session sont membres de $ TMUX_GROUP

usermod -aG $TMUX_GROUP user1
usermod -aG $TMUX_GROUP user2
kmac
la source
Bienvenue dans * nix.SE! C'est une assez bonne première réponse, bien que je vous recommande d'envisager d'ajouter certains des bits les plus utiles des deux seconds liens en ligne (pour éviter la pourriture de liens). :)
HalosGhost
4
Cela permet à deux utilisateurs de saisir des fenêtres différentes, mais pas des volets différents dans la même fenêtre. (tmux 1.6)
attend
2

Vous pouvez essayer d'exécuter deux sessions tmux distinctes à la fois - une pour vous et la seconde pour l'autre utilisateur. Ensuite, utilisez le système de fenêtrage de votre système d'exploitation pour organiser deux terminaux côte à côte, un pour vous et un pour lui. Si vous avez besoin d'écrire dans son terminal, choisissez-le simplement pour la saisie.

Vous exécutez (chaque commande dans son propre terminal):

tmux new-session -s Alice
tmux new-session -s Bob

Et puis Bob s'exécute (encore une fois, chaque commande dans son propre terminal):

tmux attach -t Alice
tmux attach -t Bob

Si vous ne disposez pas d'un système de fenêtrage prenant en charge l'affichage côte à côte ou si vous détestez la souris, vous pouvez chacun (avec soin) le configurer dans une session d'écran / tmux wrapper non partagée.

fwip
la source
Merci, mais j'avais besoin de cela dans un environnement de serveur, donc pas de fenêtres (nous jouions avec le fonctionnement des serveurs)
ferhtgoldaraz
1
@ferhtgoldaraz: vous pouvez simplement utiliser une session tmux divisée pour contenir les deux sous-sessions!
Ashe
@Yuki: Intéressant, j'examinerai cela
ferhtgoldaraz
@Ashe Qu'entendez-vous par session tmux divisée et deux sous-sessions? Pouvez-vous élaborer s'il vous plaît?
elquimista
@elquimista bonjour il y a plus de 4 ans! Ce que je voulais dire était d'exécuter tmux, puis de diviser la fenêtre en deux volets (par exemple avec ctrl-b% ou ctrl-b "), puis d'exécuter tmux (à nouveau) dans chaque volet, en partageant les sessions comme suggéré dans la réponse.
Ashe