Question tmux vs écran


Je suis sur le point de recommencer à utiliser Écran GNU, mais j'ai entendu des gens mentionner occasionnellement tmux comme une meilleure alternative. Offre-t-il vraiment une alternative à toutes les fonctionnalités? Écran des offres, telles que la surveillance des activités dans différentes fenêtres, etc.? Quels sont les avantages et les inconvénients de chacun?


213
2018-01-06 15:20


origine


Également discuté à unix.stackexchange.com/questions/549/tmux-vs-gnu-screen - Lloyd Dewolf
En écran, vous pouvez envoyer des commandes à une session attachée via screen -S automate_me -X stuff 'command'$(echo -ne '\015') vous ne pouvez pas dans tmux. Assez utile si vous testez une ISO / image de Virtualbox et que vous avez besoin de faire quelques commandes à distance rapidement. Par exemple, je l'ai dans une commande Vim pour déboguer rapidement des scripts dans un écran Virtualbox. Dans les versions précédentes de tmux, je trouvais que cet écran gérait plus de passages de texte rapidement, tandis que tmux se bloquait. Aussi l'écran ne nécessite aucune configuration pour gérer UTF-8, etc. - dezza


Réponses:


Certaines des principales raisons que je préfère tmux plus de screen:

  • La barre d'état est beaucoup plus facile à utiliser. Vous pouvez facilement configurer différents textes / styles pour la fenêtre en cours, les fenêtres avec activité, etc. et vous pouvez mettre les choses à gauche et à droite de la barre d'état, y compris les commandes shell pouvant être exécutées à un intervalle spécifié (15 s par défaut).
  • Presque n'importe quelle commande que vous pouvez exécuter à l'intérieur tmux peut être exécuté à partir d'un shell avec tmux command [args]. Cela le rend très facilement scriptable, tout en facilitant l'exécution de commandes complexes.
  • Renommage automatique des fenêtres beaucoup plus précis. Tandis que screen définit le titre en fonction du premier mot de la commande, et nécessite une configuration du shell pour faire même cela dans une fenêtre shell, tmux garde la trace des processus en cours d'exécution dans chaque fenêtre et met à jour le titre en conséquence. De cette façon, vous obtenez un renommage dynamique avec n'importe quel shell et aucune configuration. Par exemple: Disons que vous exécutez Z Shell; le nom de la fenêtre serait "zsh". Maintenant, disons que vous voulez éditer un fichier de configuration, donc vous tapez sudo emacs /etc/somefile. Pendant que sudo demande votre mot de passe, le nom de la fenêtre sera "sudo", mais une fois que vous aurez fait sudo les lancements emacs, le titre sera "emacs". Quand tu es tout fait et que tu sors emacs, le titre reviendra à "zsh". Ceci est très utile pour garder une trace de Windows, et peut être particulièrement utile dans des situations spécifiques, comme si vous aviez un processus de longue durée dans une autre fenêtre qui vous invitait parfois à utiliser dialog; le nom de la fenêtre deviendrait "dialogue" lorsque cela se produirait, vous devriez donc savoir que vous devez passer à cette fenêtre et faire quelque chose.
  • Gestion de session plus soignée (IMHO). Vous pouvez faire beaucoup plus avec les sessions au sein de tmux lui-même Vous pouvez facilement changer, renommer, etc. et vous pouvez déplacer et partager des fenêtres entre les sessions. Il a également un modèle différent, où chaque utilisateur possède un serveur qui contrôle ses sessions et auquel le client se connecte. L'inconvénient est que si le serveur plante, vous perdez tout; Je n'ai jamais eu le serveur en panne sur moi, cependant.
  • tmux semble être plus activement développé. Il y a des mises à jour assez fréquentes et vous pouvez déposer un rapport de bogue ou une demande de fonctionnalité en fonction de cette FAQ et obtenez une réponse dans quelques jours.

Ce ne sont que les choses majeures qui viennent immédiatement à l’esprit. Il y a aussi d'autres petites choses et je suis sûr que j'oublie certaines choses. Ça vaut vraiment le coup de donner tmux un essai, cependant.


140
2018-01-17 20:36



Le développement de tmux est plus actif car il est Nouveau. L'écran GNU est presque 25 ans, donc ils ont corrigé la plupart des bugs. - a paid nerd
Le commentaire d'un nerd payé est une qualification très importante de votre dernier point. Et le deuxième point, comme indiqué, n’est pas vraiment une différence car il s’applique également à l’écran, à moins que vous ne puissiez être plus précis. - jw013
@ un nerd payé: techrepublic.com/blog/opensource/is-tmux-the-gnu-screen-killer/ - sjas
@apaidnerd est une déclaration très riche: savannah.gnu.org/bugs/ - Błażej Michalik


(Sessions sont des collections de les fenêtres qui peut être détaché et recollé plus tard. Windows peut contenir un ou plusieurs vitres. Par exemple, configs, consultez ici et ici.)

tmux

  • Avantages
    • Peut envoyer des clés à d'autres panneaux, un peu comme un IDE
    • Des raccourcis faciles - avec la bonne configuration, vous vous sentirez chez vous avec Vim ou Screen
    • Liaisons Vim-ish et Emacs-ish intégrées
    • Bonne gestion de la mise en page, un peu comme un gestionnaire de fenêtres en mosaïque
    • Unicode semble fonctionner avec des terminaux modernes
    • Quelques problèmes de terminal corrigés avec TERM=tmux
  • Les inconvénients
    • Slow - pas sûr de savoir pourquoi, mais les frappes semblent lentes Plus de problèmes avec la lenteur
    • Le multiplexage force la largeur et la hauteur de toute la session au plus petit terminal attaché
    • A planté plusieurs fois sur Mac OS X, perdant toute la session
    • A échoué sous Linux après la mise à niveau, où je ne pouvais pas me reconnecter à mon ancienne session
    • Manque occasionnellement les frappes de commande - ^ A ^ [ prend quelques essais pour le mode copie
    • Impossible de déplacer un volet d'une fenêtre à une autre Fixé avec le join-pane commander
    • Pas de traçage de ligne (ou de "refusion" ou de "rewrap") après un changement de largeur de terminal (redimensionnement de fenêtre)

Écran GNU

  • Avantages
    • Extrêmement stable (la v1.0 était en 1987)
    • Quelques problèmes de terminal corrigés avec TERM=screen
    • Liaisons Emacs-ish intégrées
    • Facile à déplacer et à contrôler les volets horizontaux
    • Lors du multiplexage, tout terminal connecté peut redimensionner un volet
  • Les inconvénients
    • Pas de division verticale sans patch (sauf sur Ubuntu)
    • Les séparations de volet sont perdues lors du détachement
    • Faire fonctionner Unicode prend un peu de finesse et de détermination
    • Configuration de ligne d'état fou

84
2018-05-04 18:28



Les frappes au ralenti sont-elles uniquement en appuyant sur Esc? tmux a un délai où il attend de voir si vous entrez une séquence xterm ou juste un seul Esc, et combiné avec les vim, cela peut sembler assez louche. Définissez le temps d'échappement sur une valeur inférieure à 50. - Eevee
C'est aussi drôle tu dis ^A ^[ ne fonctionne pas parfois; J'ai le même problème avec l'écran, mais jamais tmux! Et je crois que vous pouvez déplacer des vitres avec join-pane. - Eevee
Je trouve que cet écran utilise beaucoup plus de mémoire, ce qui pourrait être considéré comme un inconvénient. - paradroid
Bien, tmux suce avec vim, dans certains cas (le mien notamment), aucune solution n’a jamais été publiée, et même les personnes qui ont passé du temps à résoudre le problème ne pouvaient pas le faire. C'est embêtant quand on ne peut pas utiliser <C-Left> et <C-Right> dans vim. - yo'
No vertical splits without patch (except on Ubuntu) Je ne pense pas que ce soit vrai. J'utilise l'écran depuis quelques années maintenant et je n'ai jamais eu de problèmes de séparation horizontale ou verticale sur Debian et Fedora. Même sur Android avec Termux, cela fonctionne comme un charme. - Forivin


Un pro pour écran: il est quasiment prêt à l'emploi sous Linux et Solaris. Lorsque vous devez basculer entre les plates-formes, il est préférable de ne pas changer de contexte mental.

Je suis sûr que vous pouvez compiler tmux sur n'importe quelle plate-forme, mais parfois vous avez juste assez d'accès pour utiliser l'écran, mais les administrateurs du système ne veulent pas vraiment ajouter de logiciel qui n'est pas absolument nécessaire.


9
2018-04-10 18:05





Les choses que je sors de tmux Je ne suis pas facilement dans l'écran sont:

  1. faire des divisions verticales
  2. le multiplexage, que nous utilisons pour le couplage distant et local.

8
2018-04-19 17:30



Ne pas support de l'écran multiplexage avec le -x option et acladd? - poolie
Comme le post précédent le mentionne, l’écran a des divisions verticales (nécessite apparemment un correctif sans Ubuntu). En outre, le multiplexage fonctionne bien et dure depuis de nombreuses années. - EntangledLoops
les divisions verticales ont été dans la ligne principale screen depuis 4.2, publié en 2014. De nombreuses distributions très anciennes versions, en particulier Apple. - Neal Fultz
Les deux points sont incorrects. - Forivin


J'utilise tmux depuis environ 2 jours, donc mon enthousiasme débridé n'a pas encore été tempéré par des cas d'utilisation ennuyeux. En passant par les difficultés croissantes habituelles liées à la transition d’un programme à un autre, j’ai été frappé par plusieurs aspects positifs, mais la fonctionnalité qui me fait croire que je ne reviendrai jamais à l’écran est l’utilité du mode copier-coller. Dans l'écran, vous ne pouvez pas entrer en mode copie, faites défiler le tampon, puis accédez à une autre fenêtre. Dans tmux, vous pouvez avoir plusieurs fenêtres simultanément en mode copie avec le tampon défilant vers différentes positions. En outre, il existe plusieurs tampons de copie. Et vous n'avez pas besoin de patcher la source pour obtenir le mouvement du curseur fFtT.


7
2018-01-17 16:10





J'ai remplacé Écran GNU avec tmux dans tous les cas d'utilisation sauf un-quand j'ai besoin d'un Hyper Terminal équivalent à se connecter aux ports série. Comme l'a noté Aaron Toponce dans son article "Connexion à des modems Null série avec écran GNU", la tmux FAQ États:

L'écran a un support série et telnet intégré; c'est gonflé et c'est peu probable     à ajouter à tmux.

Mon typique tmux il est utile de créer des sessions de développement multi-panneaux et multi-fenêtres en combinaison avec tmuxinator. Si vous voulez apprendre tmux, Je recommande de prendre le livre de Brian P. Hogan, tmux: développement sans souris productif.


4
2018-06-21 15:27





Je dirais que la disponibilité de cet écran est sa force, mais son système de fenêtrage n'est pas aussi facile à gérer que 'S. Je dois dire que j'utilise  la plupart du temps à l'heure actuelle et par conséquent ont beaucoup d'onglets de terminal au lieu de fenêtres d'écran.

@Jed Schneider: Vous pouvez obtenir des divisions verticales avec Ctrl+UNE et alors | (barre verticale).


1
2017-12-15 22:15





Un des responsables de tmux, Thomas Adam, est également énumérés en tant que responsable de la screen projet bien qu'il ne touche que le code tmux, qui est énorme pro de tmux over screen.


0
2018-01-10 23:20





Quelqu'un a-t-il considéré que vous risquiez de perdre votre écran de session en cours d'exécution, selon votre utilisation?

J'ai appris le tmux au cours des derniers jours et je l'aime vraiment, en particulier la personnalisation étonnante qui peut être faite dans ~ / .tmux.conf.

Mais pour moi, avec les écrans, du moins dans la manière dont je les utilise le plus, les sessions sont diffusées sur la machine distante sur laquelle je cours. Habituellement, exécuter une longue commande que je peux ensuite détacher et revenir plus tard. Je n'exécute que rarement l'écran localement depuis mon poste de travail pour me connecter à d'autres hôtes.

Avec tmux, au moins de la manière dont je l’utilise le plus, et ses sessions connectées s'exécutent localement sur mon poste de travail.

Si ma station de travail perd sa connexion, j'imagine que tmux laisse tomber les connexions à tous les serveurs auxquels je suis connecté?

Je suppose que cela pourrait être un pro pour écran sur tmux, en fonction de la façon dont vous l'utilisez?


-3



Est-ce une question ou une réponse? Le but des deux - écran et tmux est de ne pas utiliser le descripteur de fichier terminaux (stdin, stdout, stderr) attribué à une connexion particulière par OS, qui est la raison pour laquelle les deux peuvent survivre à des perturbations du réseau et de continuer à fonctionner. Si vous configurez des connexions externes à partir de tmux / screen vers des ressources distantes et que ces connexions sont rompues, elles ne sont pas du tout liées à tmux / screen car elles ne peuvent pas toutes les deux contrôler. Je vous suggère de modifier votre réponse si vous ne voulez pas être signalé car la réponse est supposée répondre à une question - Alex