web-dev-qa-db-fra.com

Byobu vs. GNU Screen vs. tmux - utilité et transférabilité des compétences

Jusqu'ici, j'ai utilisé Konsole pour gérer plusieurs sessions de Shell, mais je n'ai pas encore essayé Byobu , GNU Screen , et tmux , qui offrent une meilleure support pour plusieurs coques. Ils partagent tous une fonctionnalité principale, à savoir permettre de détacher la session en cours et de se reconnecter ultérieurement à cette ancienne session.

Pour m'aider à choisir un outil d'apprentissage, j'aimerais savoir: en quoi diffèrent-ils sur les points suivants?

  1. Caractéristiques (évidemment)
  2. Maturité du projet. Je ne veux pas apprendre un outil qui change trop. Les améliorations sont les bienvenues, mais je n'aime pas les surprises telles que la disparition de fonctionnalités.
  3. Courbe d'apprentissage
  4. Disponibilité sur différentes plateformes. Si j'apprends un outil, j'aimerais pouvoir l'utiliser sur un serveur FreeBSD, un bureau SuSE ou Ubuntu.
  5. Compatibilité avec d'autres programmes Shell interactifs. Puis-je quand même utiliser vim et emacs -nw (mode non-fenêtre ou mode texte) de la même façon que je suis habitué? Les raccourcis clavier entreront-ils en conflit avec ceux d'autres outils?

Je viens de les essayer tous et Byobu ressemble à une sorte de front-end pour GNU Screen et tmux. Alors pourquoi quelqu'un a-t-il créé Byobu au lieu de contribuer au projet d'écran GNU et d'ajouter de nouvelles fonctionnalités? Pourquoi Byobu n’est-il pas une sorte de mode d’interface avancé dans GNU Screen? Si j'utilise Byobu comme outil quotidien avec GNU screen comme back-end, puis-je transférer cette connaissance pour utiliser GNU Screen sans Byobu si une machine donnée ne possède que GNU Écran?

90
Keitai

Pour l’écran Tmux vs GNU, lisez

et plusieurs autres incarnations de comparaison que l'on peut trouver sur des blogs et autres.

Quelques termes généraux souvent répétés:

  • Tmux est plus récent. Cela signifie qu’il est un peu plus sophistiqué (fractionnement vertical simple, belles lignes vertes) et un peu moins bien testé, par exemple. compatibilité (dans une mesure négligeable selon ses promoteurs).
  • Tmux est maigre sur les ressources.
  • GNU Screen est présent partout et est probablement encore plus utilisé.

En dehors de cela, on peut regarder des fonctions spécifiques pour l'une ou l'autre alternative, et la préférence personnelle dominera la discussion. Personnellement, j’utilisais souvent GNU Screen - j’utilise maintenant Tmux.

Je n'ai pas trouvé que Byobu ait des "fonctionnalités mortelles" pour moi. Il fournit une abstraction où je pense qu'aucun n'est nécessaire pour mes cas d'utilisation.


Une autre façon de voir les choses est de noter que Byobu peut utiliser soit GNU Screen, soit Tmux comme back-end, ce qui montre que les différences par rapport à un POV utilisateur sont généralement superficielles.

29
Daniel Andersson

Bonne question! Pour ce que ça vaut, je suis l'auteur et le mainteneur de Byobu .

Byobu est une couche de configuration, écrite à l'origine pour s'asseoir sur GNU Screen , mais fonctionne également maintenant sur Tmux .

J'ai commencé à écrire Byobu en décembre 2008 , alors que je rencontrais un groupe d'utilisateurs de Screen et d'Ubuntu Server au Googleplex et que je trouvais que all maintenu notre propre groupe de hacks soignés/amusants/utiles dans nos configurations ~/.screenrc. Et nous avons dû déplacer manuellement ceux-ci entre les dizaines ou les centaines de serveurs que nous avons utilisés. Nous avons commencé à échanger des conseils et astuces, et j’ai commencé à les rassembler dans le projet original GPLv3 appelé "profils d’écran". Environ 6 mois plus tard, toute une communauté s'était développée autour de " screen-profiles }" et le projet devenait bien plus que de simples hacks d'écran: nous avions des utilitaires de configuration, des plugins d'état en direct et des raccourcis clavier. Donc, nous renommons le projet "Byobu", mot japonais qui désigne ces "écrans" élégants et pliants, et qui présente l’avantage supplémentaire de pouvoir utiliser Google avec plus de succès pour "Byobu $ FOO" que "Screen. $ FOO ".

Avec Byobu maintenant dans la plupart des distributions Linux ( Ubuntu , Debian , Fedora , Arch ), et fonctionnel sur la plupart des Mac/BSD et autres Les systèmes UNIX offrent la même apparence, des raccourcis clavier pratiques et des informations dynamiques sur l'état du système, quel que soit le terminal auquel vous pourriez avoir besoin d'accéder.

Pourquoi ne pas contribuer au projet GNU Screen? Quelques raisons ... Tout ce que Byobu fonctionne, ainsi que les options de configuration. Rien de tout cela ne nécessite d'être inclus dans la base de la source de l'écran pour être fonctionnel. Certaines choses pourraient fonctionner mieux ou mieux si Screen les incluait par défaut, mais beaucoup de changements sont très "fictifs", il est généralement difficile ou impossible de contribuer à un 25 ans projet en amont. De plus, le projet GNU Screen se déplace très lentement, voire pas du tout. Il a plus de 25 ans et n'a pas de version officielle depuis le août 2008 . Chaque distribution contient d’énormes piles de correctifs pour que votre/usr/bin/screen reste opérationnel et sécurisé. Par exemple, Ubuntu et Debian portent actuellement 19 000 lignes de code dans ~ 48 correctifs .

J'ai appris l'existence de Tmux il y a environ 2 ans et je suis vraiment tombé amoureux du code source, du design, de l'interface et de la communauté active! J'ai eu beaucoup plus de facilité contribuant à apporter des correctifs à Tmux en amont et à des discussions sur des sujets de la liste de diffusion. Et en tant qu'utilisateur de Byobu qui l'utilise partout, je souhaitais que mes sessions Tmux soient identiques à celles que j'avais appréciées depuis plus de 4 ans à Byobu. Donc, je ported tout le code Byobu fonctionne aussi bien avec Tmux que le backend, comme Screen. À compter de la version de Byobu 5.0 , Tmux est désormais le moteur par défaut, avec Screen toujours pris en charge dans un mode hérité. Byobu exploite maintenant nombre des fonctionnalités modernes de Tmux over Screen, notamment la prise en charge considérablement améliorée de 256 couleurs, les caractères UTF8 et la division de la fenêtre horizontale/verticale.

Si vous êtes satisfait des paramètres par défaut dans Screen ou Tmux, ou si vous voulez écrire vos propres fichiers de configuration à partir de rien, alors Screen et Tmux sont des utilitaires fantastiques qui ont ajouté de nombreuses années d’efficacité à nos vies. Si vous êtes intéressé par un ensemble de configurations qui étend vraiment ce que Screen et Tmux font de la boîte, jetez un œil à Byobu!

A bientôt, Dustin

257
Dustin Kirkland

Dans un cas d'utilisation réel, la plus grande différence entre screen et tmux réside dans la façon dont ils gèrent les fenêtres divisées.

Une fenêtre dans screen est un pseudo-terminal unique. Une fois connecté à une session screen, vous pouvez fractionner votre terminal en plusieurs régions, chacune pouvant afficher une fenêtre screen. Plusieurs régions peuvent afficher la même fenêtre. Les scissions ne font pas partie de la session; si vous vous détachez, vos scissions sont parties.

Une fenêtre dans tmux consiste en un ou plusieurs pseudo-terminaux, un par volet. Cela signifie que les volets persistent si vous vous détachez et vous attachez plus tard. Cela signifie également que vous ne pouvez afficher qu'une fenêtre à la fois dans tmux et que les volets ne peuvent pas être partagés entre plusieurs fenêtres. tmux permet autorise une fenêtre à partager entre plusieurs sessions, cependant.

Je préfère le modèle utilisé par tmux, mais je ne peux pas affirmer qu'il est meilleur que le modèle utilisé par screen.

12
chepner

Pour moi, le facteur décisif pour tmux était la mise en œuvre du partage de session.

Dans GNU Screen, si vous laissez un autre utilisateur se connecter à une session ou connectez simplement votre session à plusieurs terminaux, ils peuvent fonctionner indépendamment (le changement d'écran dans une session A depuis le terminal B ne permet pas le terminal A change également d’écran en session A).

Ce qui précède n’est pas le cas avec tmux (encore?) Ou je n’ai pas encore trouvé le moyen de changer le comportement.

Si quelqu'un connaît un moyen de changer ce comportement dans tmux ou si tmux se met à jour pour changer ce comportement ou donner l'option de le changer maintenant, veuillez laisser un commentaire.

4
therealklanni