tmux vs. GNU Screen [fermé]

194

Parcourir les questions que j'ai trouvées sur tmux (j'utilisais normalement GNU Screen). Ma question est de savoir quels sont les avantages et les inconvénients de chacun d’eux. Surtout je n'ai pas trouvé grand chose à propos de tmux.

Maciej Piechotka
la source
9
Également discuté à superuser.com/questions/236158/tmux-vs-screen
Lloyd Dewolf
5
Comme vous pouvez le constater à partir des bonnes réponses ci-dessous, elles ne sont pas basées sur une opinion.
reinierpost
@reinierpost - il semble que beaucoup de gens ici sont trop prompts à fermer les questions comme "principalement basées sur l'opinion". Cependant, nous pouvons voter pour rouvrir.
MountainX
Bien que cette question soit une question de comparaison, je pense que les arguments pour et contre sont suffisamment objectifs et que, par conséquent, la raison proche de l'opinionersness n'est pas acceptable ici. Vous pouvez vérifier la question liée SU, les réponses sont assez correctes.
user259412

Réponses:

122

De leur site web :

  • En quoi tmux est-il différent de l'écran GNU? Que propose-t-il d'autre?

tmux offre plusieurs avantages par rapport à l'écran:

  • un modèle client-serveur clairement défini: les fenêtres sont des entités indépendantes pouvant être attachées simultanément à plusieurs sessions et visualisées à partir de plusieurs clients (terminaux), ainsi que déplacées librement d'une session à l'autre au sein du même serveur tmux;
  • une interface de commande cohérente et bien documentée, avec la même syntaxe, qu'elle soit utilisée de manière interactive, en tant que liaison de clé ou à partir du shell;
  • facilement scriptable depuis le shell;
  • plusieurs tampons de pâte;
  • choix de la disposition des touches vi ou emacs;
  • une option pour limiter la taille de la fenêtre;
  • une syntaxe de ligne d'état plus utilisable, avec la possibilité d'afficher la première ligne de sortie d'une commande spécifique;
  • une base de code sous licence BSD plus propre, moderne et facilement évolutive.

Il reste encore quelques fonctionnalités à l'écran que tmux omet:

  • prise en charge série et telnet intégrée; c'est gonflé et il est peu probable qu'il soit ajouté à tmux;
  • support de plates-formes plus étendu, par exemple IRIX et HP-UX, et pour les terminaux impairs.
nisc
la source
4
zut ... maintenant je veux essayer tmux ... juste parce que l'écran n'a pas fonctionné pour moi à cause du manque de raccourcis clavier vi.
xenoterracide
1
Est-ce que vi ou emacs keybindings signifie simplement que tmux est livré avec deux jeux de valeurs par défaut pratiques? Il est possible de reconfigurer complètement les associations de touches de l'écran avec son fichier rc.
jw013
Vous pouvez définir des liaisons de clés arbitraires. Voir: openbsd.org/cgi-bin/…
nisc
Quand ils parlent de la mise en œuvre, ils devraient enfin résoudre le bogue stupide avec <C-Left>dans vimdans tmux.
Yo '19
45

Une différence réside dans la manière dont les deux agissent lorsque plusieurs terminaux sont attachés à une même session.

Avec l'écran, la vue de chaque terminal connecté est indépendante des autres. Avec tmux, tous les terminaux connectés voient la même chose.

Supposons que vous ayez deux terminaux attachés à une seule session tmux. Si vous tapez ^B1 dans un terminal, l’autre terminal passe également à la fenêtre 1.

Lorsque vous avez deux terminaux connectés à une session d'écran unique et que vous tapez ^A1 en un, cela n'a aucun effet sur l'autre terminal.

Ceci est basé sur mon expérience avec tmux 1.2; Je vois que 1.3 est sorti mais je n'ai rien remarqué dans le changelog concernant ce changement de comportement.

Si vous aimez le comportement de l'écran et que vous le voulez dans tmux:

Si votre session tmux d'origine est appelée 0(par défaut), vous pouvez le faire tmux new-session -t 0) pour démarrer une nouvelle session indépendante connectée au même ensemble de fenêtres, qui peut alors avoir sa propre vue.

tremper
la source
1
C'est une distinction intéressante. Je suis sûr que chacun de ces avantages présente des avantages, pour différents cas d'utilisation. (avantage tmux: deux personnes attachées à la même session tmux, par exemple pour une programmation par paire distante, verront toujours la même chose; avantage d’un écran: une personne attachée au même écran depuis deux endroits à deux fins différentes peut avoir deux vues différentes, , disons, côte à côte (fenêtres OS / windowmanager-level)))
lindes
10
si votre session tmux d'origine s'appelle "0" (par défaut), vous pouvez alors faire "tmux new-session -t 0") pour démarrer une nouvelle session indépendante connectée au même ensemble de fenêtres, qui peut alors avoir sa propre vue. Je suis à peu près sûr que cela a fonctionné en 1.2 / 1.3, mais je ne m'en souviens pas tout de suite.
Cos
@cos c'est exactement le conseil que je cherchais. Merci beaucoup. J'aimerais pouvoir vous voter deux fois :) Je vais commencer à attacher à chaque fois maintenant 'tmux new-session -t 0'.
jeudi
@Cos Ceci a été ajouté "DE 1.0 À 1.1, 5 novembre 2009". @jrwren La commande peut être raccourcie tmux new -t 0.
user285259
24

tmux est relativement nouveau comparé à l’écran GNU. Avantages / inconvénients est une question difficile, car les deux programmes résolvent à peu près le même problème. tmux est sous licence BSD alors que screen est GNU GPL. Cela compte pour certaines personnes.

screen est plus représenté (sur Linux) pour le moment, c’est-à-dire que vous êtes plus susceptible de le trouver sur une boîte Linux donnée que tmux. tmux est cependant plus représenté sur OpenBSD car il est inclus dans l’installation de base.

Les deux programmes vous permettent de faire la même chose, bien que l’état des choses soit un peu plus complexe que cela. Basculer entre les deux n'est pas trop compliqué, car de nombreuses fonctionnalités d'écrans ont également trouvé leur place dans tmux, bien que si vous êtes un utilisateur averti de l'un ou de l'autre, vous aurez probablement des frustrations en passant à l'autre.

Comme pour tout programme, cela dépend vraiment de vos besoins et de ceux avec lesquels vous êtes le plus à l'aise. Donnez-leur un essai et voyez avec qui vous jouez bien.

Pour plus d'informations sur tmux, consultez https://tmux.github.io/

gabe.
la source
17

La plus grande différence dans mon utilisation est que dans Gnu Screen, vous ne pouvez diviser les images que horizontalement, alors que dans Tmux, vous pouvez séparer les images horizontalement et verticalement. C'est une sorte de cible en mouvement, bien que, comme je l'ai dit ici, la division verticale se répande dans l'écran .

À part cela, les choses sont à plat.

Eli Frey
la source
10
vous pouvez également vous séparer verticalement à l'écran. mmm ... de peur que cela ne fonctionne avec l'installation à l'écran Ubuntu 10.10 par défaut.
Stann
4
@andre Il y a un patch de longue date pour la division verticale de l'écran ... qui n'a jamais été intégré en amont ... mais je suis sûr que de nombreuses distributions l'ont appliqué.
xenoterracide
17

Je pensais simplement mentionner que l’ byobuemballage disponible pour l’écran le rendait tellement meilleur qu’il était déjà prêt à l'emploi. Je ne sais pas si quelque chose comme ceci est disponible pour tmux, mais byobumon écran .creenrc ne fait que quelques lignes. Découvrez cet article rapide sur Byobu et les captures d'écran. La page de projet pour byobu décrit le nom d’un terme japonais qui désigne des écrans décoratifs à plusieurs panneaux servant de séparateurs de pièces pliantes. En outre, le simple fait de l'exécuter n'affecte pas les paramètres de votre écran, vous pouvez donc l'essayer en toute sécurité. Une fois que vous avez démarré la session, byobuvous pouvez vous reconnecter librement à celle-ci en utilisant screenet ne perdez pas les personnalisations effectuées par byobu(utilisez-le uniquement pour l'appel initial). Les deux principaux avantages sont:

  • Démarre l'écran avec quelques barres d'état avec des informations utiles
  • Fournit de nombreuses combinaisons de touches pour accéder plus facilement aux fonctionnalités de l'écran

Je n'utilise pas la partie keybindings, mais trouve les barres d'état utiles.

Aussi, vous trouverez peut-être utile le lien Screen Vs tmux . Je pense que la plus grande partie est déjà mentionnée dans les réponses existantes.

haridsv
la source
Votre réponse serait plus utile si vous résumiez les fonctionnalités de byobu, comme ceci répond avec sa liste de fonctionnalités.
Gilles
Bien, j’ai ajouté plus d’informations sur byobu, mais c’est aussi simple que d’exécuter la commande et de la trouver par vous-même (elle dépend du menu), car elle ne perturbe pas les paramètres d’écran existants. Et j'ai fait de ma réponse un wiki de communauté, alors n'hésitez pas à la modifier.
haridsv
1
Byobu semble également prendre en charge tmux, du moins dans les versions les plus récentes.
Darael
12

Drench soulève un point intéressant: le comportement par défaut consistant à se connecter deux fois à la même session est différent dans tmux. Toutefois, si vous souhaitez joindre deux fois et avoir une vue indépendante des fenêtres de cette session, démarrez tmux avec

tmux new-session -t <session name>

Cela créera une nouvelle session pour vous et joindrez les fenêtres de la session existante. Si vous n'avez pas nommé votre première session, vous pouvez en ajouter une avec 'rename-session'.

Rikard Anglerud
la source
12

Un gros inconvénient, screenc'est qu'il n'est pas activement développé. Les pages de bogues contiennent près de 200 éléments non attribués datant de plus de 5 ans.

tmux a également quelques problèmes en suspens, mais beaucoup moins, et est pris en charge plus activement.

Harold
la source
8

tmux est plus récent et plusieurs autres fonctionnalités.

J'ai trouvé qu'un bon usage dépend d'une bonne configuration.

J'utilise vi (vim) pour l'édition (ruby on rails) et il y a quelques choses à installer pour que cela fonctionne bien.

Voici mon fichier ~ / .tmux.conf avec beaucoup de paramètres utiles:

bind r source-file ~/.tmux.conf \; display "Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
Michael Durrant
la source
Tmux est plus récent, mais «plusieurs autres fonctionnalités» implique qu'il possède également au moins la parité des fonctionnalités avec l'écran, ce qui n'est pas le cas - En plus de ce qui a été mentionné ailleurs, le support multi-utilisateurs de tmux fait cruellement défaut. Aucun statut ou statut, et juste en général, cela montre la nouveauté de tmux en ce que ce que vous pouvez faire n'est pas très poli.
Semi
C'est bon à savoir. Je l'utilise depuis un an et je n'ai pas remarqué le besoin de peaufiner, même si un peu de hongrois pourrait aider. Notation qui est. ok, mauvais jeu de mots;) N'avait pas utilisé screen avant de ne pas remarquer les problèmes mentionnés. Trouverait plus difficile de passer à l'écran et de perdre les nouvelles fonctionnalités maintenant.
Michael Durrant
8

Je me permettrai d'ajouter une différence:

tmux est basé sur ncurses alors que screen ne dessine pas d’éléments supplémentaires. Si quelqu'un utilise un émulateur de terminal qui prend en charge le défilement, il fera défiler l'écran mais pas avec tmux (au moins dans la configuration par défaut). La même chose s'applique à la recherche et à des fonctionnalités similaires.

Maciej Piechotka
la source
2
Je n'ai jamais vu défiler à l'écran comme ... jamais? : /
unperson325680
oui, mon TE supporte le défilement et les sauts d'écran ... Je dois faire défiler l'écran. -1 ne semble pas être précis.
xenoterracide
@xenoterracide: Hmm. Vous avez partiellement raison. L'écran sur certaines distributions / systèmes (Gentoo plus ancien) ne le casse pas alors que sur certaines (nouvelles Ubuntu), il le fait. Je ne sais pas pourquoi.
Maciej Piechotka
peut-être un patch ... les nôtres sont tous des systèmes à 5,5%
xenoterracide
6

J'ai eu du mal à faire en sorte que l'écran prenne en charge les couleurs utf-8 et 256, mais tmux a fonctionné de manière originale.

Zvolkov
la source