Articles

Comment utiliser tmux sous Linux (et Pourquoi C’est mieux Que l’Écran)

  • Dave McKay

    @TheGurkha

  • 14 mai 2020 à 8h00 HAE
fatmawati achmad zaenuri/

La commande Linux tmux est un multiplexeur de terminal, comme screen. Ses défenseurs sont nombreux et virulents, nous avons donc décidé de comparer les deux. tmux est-il vraiment meilleur, ou est-ce juste un cas de préférer ce que vous savez?

tmux vs. screen

Les commandes tmux et GNU screen sont des multiplexeurs de terminaux. Ils vous permettent d’avoir plusieurs fenêtres dans une seule fenêtre de terminal et de sauter d’avant en arrière entre elles. Une fenêtre peut être divisée en volets, chacun vous donnant une ligne de commande indépendante.

Vous pouvez également détacher une session et celle—ci devient une entité sans tête s’exécutant en arrière-plan – vous pouvez même fermer la fenêtre du terminal qui l’a lancée. Lorsque vous êtes prêt, vous pouvez ouvrir une nouvelle fenêtre de terminal et rattacher la session toujours en cours. Vous pouvez également le faire via une connexion SSH.

Publicité

Vous pouvez détacher une session sur un ordinateur, rentrer chez vous et vous connecter à l’ordinateur distant. Une fois reconnecté, vous pouvez rattacher à nouveau la session d’arrière-plan et l’utiliser de manière interactive.

Quelle est la commande d’écran ?

La commande screen est également un multiplexeur de terminaux, et elle regorge d’options. Pour en savoir plus sur tout ce que vous pouvez en faire, consultez notre article détaillé.

Cette fois, nous allons nous concentrer sur tmux. Au fur et à mesure, nous mentionnerons comment screen gère la même fonctionnalité ou fonction.

Publicité

Une seule chose nous a ennuyés à propos de screen. Nous couvrirons cela lorsque nous y arriverons, et verrons si tmux se porte mieux.

CONNEXE: Comment utiliser la commande d’écran de Linux

Installer tmux

Alors que screen est généralement installé par défaut sur les distributions Linux populaires, tmux ne l’est pas. Pour installer tmux sur Ubuntu, tapez ce qui suit:

sudo apt-get install tmux

Sur Manjaro, vous pouvez utiliser pacman:

sudo pacman -Sy tmux

Sur Fedora 31, tmux est déjà installé.

Démarrage d’une session tmux

Pour démarrer tmux, tapez-le simplement et appuyez sur Entrée :

tmux

La fenêtre du terminal affichera une barre d’état lorsque vous êtes dans une session tmux.

Le côté droit de la barre d’état affiche le nom d’hôte, ainsi que l’heure et la date. Le côté gauche affiche les informations relatives à la session suivantes :

  • : C’est le nom de la session. Par défaut, ils sont numérotés, en commençant par zéro. Nous expliquons comment vous pouvez donner des noms significatifs aux sessions ci-dessous.
  • 0: bash*: Le 0 indique qu’il s’agit de la première fenêtre de cette session. Le seul processus en cours d’exécution dans cette session est bash. Si vous exécutez un programme, son nom apparaîtra ici. L’astérisque (*) signifie que c’est la fenêtre que vous regardez. Chaque fois que vous créez une nouvelle fenêtre dans une session tmux, son numéro de fenêtre et le nom du programme qui s’y exécute sont ajoutés à la barre d’état.

La commande screen ne vous donne pas de barre d’état. Vous devez voler à l’aveugle et compter sur votre intelligence pour savoir ce qui se passe, ce qui demande un peu de pratique.

Publicité

Du côté positif, vous ne perdrez pas une ligne d’immobilier de fenêtre de terminal. Bien sûr, vous développez normalement la fenêtre de votre terminal pour que l’utilisation d’un multiplexeur de terminal en vaille la peine. Dans ce cas, la perte d’une ligne pour la barre d’état n’est pas un problème. Nous avons laissé les images des fenêtres du terminal ici à la taille par défaut pour que vous puissiez voir les informations.

Les commandes sont données à tmux à l’aide de frappes au clavier, et il y a deux parties à cela. Tout d’abord, vous appuyez sur Ctrl + B pour obtenir l’attention de tmux. Vous appuyez ensuite rapidement sur la touche suivante pour envoyer une commande à tmux. Les commandes sont données en appuyant sur des lettres, des chiffres, des signes de ponctuation ou des touches fléchées.

C’est la même chose dans screen, sauf que vous appuyez sur Ctrl + A pour attirer son attention.

Pour fermer la fenêtre, appuyez sur Ctrl + B, puis appuyez rapidement sur X. La barre d’état devient orange. Vous êtes alors invité à confirmer que vous souhaitez tuer la fenêtre.

Publicité

Appuyez sur Y pour fermer la fenêtre ou sur N si vous changez d’avis. Vous n’avez pas besoin d’appuyer sur Entrée par la suite; Y ou N suffit pour enregistrer votre choix.

Si vous appuyez sur Y, la fenêtre se ferme. Comme il s’agit de la seule fenêtre de cette session, la session est terminée.

La session tmux est fermée et vous êtes renvoyé à la ligne de commande à partir de laquelle vous avez lancé tmux. Vous verrez «  » dans la fenêtre du terminal.

Cela peut sembler être une évidence, mais c’est une confirmation que vous avez fermé la session et ne l’avez pas laissée détachée et en cours d’exécution. Nous discuterons des sessions de détachement ci-dessous.

Démarrage d’une session tmux nommée

Si vous démarrez régulièrement plusieurs sessions tmux, vous apprécierez rapidement la fonctionnalité de donner à chacune d’elles un nom significatif. Vous pouvez également nommer des sessions dans screen, mais elles ne sont affichées nulle part dans les fenêtres de session.

Publicité

Pour démarrer tmux avec un nom de session, utilisez la commande new (nouvelle session) et l’option -s (nom de session). Notre session va s’appeler « geek-1 », donc nous tapons ce qui suit:

tmux new -s geek-1

Lorsque la session tmux se charge, « geek-1 » est affiché comme première entrée dans la barre d’état, à l’extrême gauche.

Ajout de fenêtres

Pour créer une nouvelle fenêtre dans la session en cours, appuyez sur Ctrl+B, puis sur C. Vous obtiendrez une fenêtre de terminal vide dans la session en cours. Donc, nous aurons quelque chose en cours d’exécution dans cette nouvelle fenêtre, commençons la commande dmesg avec l’option -w(follow):

dmesg -w
Publicité

Maintenant, nous avons deux fenêtres dans la session ; l’une est en cours d’exécution top, et l’autre dmesg. Nous ne pouvons en voir qu’un à la fois, cependant (plus à ce sujet dans un instant).

Regardez le côté gauche de la barre d’état. Nous sommes toujours dans la session « geek-1 » tmux. Dans la fenêtre zéro, top est en cours d’exécution et dans la première fenêtre, dmesg est en cours d’exécution. L’astérisque (*) après dmesg nous indique quelle fenêtre est visible.

Pour passer d’une fenêtre à l’autre, appuyez sur Ctrl+B, puis sur l’une des touches suivantes :

  • N : Affiche la fenêtre suivante.
  • P: Affiche la fenêtre précédente.
  • 0 à 9 : Affiche une fenêtre numérotée de 0 à 9.

Vous pouvez également choisir une fenêtre dans une liste. Si vous appuyez sur Ctrl + B, puis sur W, une liste de fenêtres apparaît.

Publicité

Pour déplacer la barre de surbrillance orange, appuyez sur les flèches Haut ou Bas, Accueil ou Fin. La section inférieure de l’écran affiche un aperçu du contenu dans la fenêtre en surbrillance.

Appuyez sur Entrée pour passer à la fenêtre en surbrillance, ou Échap pour quitter la liste des fenêtres sans basculer.

Détacher et attacher des sessions

Si vous appuyez sur Ctrl + B, puis sur D, vous détacherez la session. Il continuera à fonctionner en arrière-plan, mais vous ne pourrez pas le voir ou interagir avec lui.

Nous avons démarré topdans la session, nous avons donc un processus en cours d’exécution avec lequel démontrer. Ensuite, nous appuyons sur Ctrl + B, puis sur D. La session disparaît et devient une session d’arrière-plan.

Publicité

Nous revenons à la fenêtre du terminal d’origine. Il y a un message de tmux nous indiquant que la session est détachée. Cela nous rappelle également le nom que nous avons donné à la session. C’est pratique car c’est ce que nous utilisons pour attacher à une session d’arrière-plan, puis la restaurer en une session interactive.

Pour attacher une session détachée, nous utiliserons la commande attach-session explicite avec l’option -t (session cible). Nous fournirons également le nom de la session que nous souhaitons rappeler.

Nous tapons ce qui suit:

tmux attach-session -t geek-1

Notre session revient et redevient une session visible et interactive.

Tous les processus de longue durée ou continus que vous avez lancés avant de détacher la session s’exécuteront toujours en arrière-plan (à moins qu’ils ne soient terminés) lorsque vous attacherez la session.

screen peut le faire, mais pas aussi intuitivement.

Gestion de plusieurs Sessions

Ouvrons une autre fenêtre de terminal, et démarrons une nouvelle session tmux appelée « geek-2 » :

tmux new -s geek-2

Dans cette session, nous allons démarrer dmesg:

dmesg -w
Publicité

Maintenant, nous avons notre session originale « geek-1 »tmux, et une nouvelle session appelée « geek-2. »

La barre d’état nous montre que cette session s’appelle « geek-2 », et qu’elle a une fenêtre qui exécute dmesg.

Si nous appuyons sur Ctrl + B, puis sur D, nous détachons cette session.

Publicité

De retour dans la session « geek-1 » tmux, nous appuyons sur Ctrl + B, puis S pour voir une liste des sessions tmux.

Pour être clair, il s’agit d’une liste de sessions. L’affichage similaire que nous avons vu plus tôt était une liste de fenêtres en une seule session.

Vous pouvez déplacer la barre de surbrillance orange en appuyant sur les flèches Haut et Bas, Accueil et Fin. La section inférieure affiche un aperçu du contenu de la session en surbrillance.

Si vous appuyez sur la flèche droite, les fenêtres de la session en surbrillance s’affichent.

Publicité

Appuyez sur Entrée pour passer à la session ou à la fenêtre en surbrillance ou Échap pour quitter la liste des sessions sans changer de session. Si vous sélectionnez une nouvelle session, celle en cours se détache et celle que vous avez sélectionnée est attachée.

Nous avons détaché la session « geek-2 » avant de faire cela. Cependant, vous pouvez le faire avec des sessions qui sont toujours attachées à leurs fenêtres de terminal d’origine. Lorsque vous le faites, toutes les modifications d’écran apparaîtront simultanément dans les deux sessions tmux.

La commande screen peut également le faire via un ensemble de commandes similaire.

Travailler avec des volets de fenêtre

Si vous appuyez sur Ctrl +B, puis sur des guillemets doubles («  »), vous divisez la fenêtre horizontalement en deux volets.

Publicité

Cela n’affecte que la fenêtre en cours ; les autres de la session ne seront pas modifiées. Nous avons utilisé la commande tmux ls dans le volet supérieur pour répertorier les fenêtres de cette session. Il y en a deux, et la ligne d’état nous indique que nous sommes dans la première fenêtre. Si nous passons à la fenêtre zéro en appuyant sur Ctrl + B, puis sur 0 (zéro), nous voyons que c’est exactement comme nous l’avons laissé.

Ce sont deux lignes de commande indépendantes, pas deux vues dans une fenêtre ; ce sont des shells distincts et séparés. Nous pouvons le montrer en exécutant une commande différente dans chaque volet.

Nous tapons ce qui suit:

uname -a

ls -hl

Pour passer d’un volet à l’autre, appuyez sur Ctrl + B, puis sur la flèche Haut, Bas, Gauche ou Droite.

Si vous appuyez sur Ctrl + B, puis sur le signe de pourcentage (%) il divise le volet actuel verticalement.

Publicité

Appuyez sur Ctrl +B, puis sur Q pour faire clignoter brièvement le numéro de chaque volet.

Ces chiffres sont utilisés dans les invites et les messages de tmux. Appuyez sur Ctrl+B, puis sur X pour fermer le volet actuel. La barre d’état devient orange et vous êtes invité à confirmer que vous souhaitez fermer ce numéro de volet. Appuyez sur Y pour supprimer le volet, ou sur N pour laisser les choses telles qu’elles sont.

Si vous appuyez sur Y, le volet est supprimé.

La commande screen a également des volets, mais, encore une fois, ils sont moins intuitifs à utiliser. Ce qui nous agace à propos de screen, c’est que si vous détachez une session avec des volets, ils disparaissent lorsque vous rattachez à nouveau cette session. Cela vieillit très vite.

Une feuille de triche Ctrl +B

Nous avons inclus une feuille de triche des différentes commandes que vous pouvez utiliser dans tmux ci-dessous.

Commandes de session

  • S : Liste les sessions.
  • $ : Renommer la session en cours.
  • D: Détachez la session en cours.
  • Ctrl+B, et puis ?: Afficher la page d’aide dans tmux.

Commandes de fenêtre

  • C: Créez une nouvelle fenêtre.
  • , : Renomme la fenêtre en cours.
  • W: Liste les fenêtres.
  • N : Passez à la fenêtre suivante.
  • P : Passez à la fenêtre précédente.
  • 0 à 9: Déplacez-vous vers le numéro de fenêtre spécifié.

Commandes du volet

  • % : Crée une division horizontale.
  • « : Crée une division verticale.
  • H ou Flèche gauche : Déplacez-vous vers le volet à gauche.
  • I ou Flèche droite: Déplacez-vous vers le volet de droite.
  • J ou Flèche vers le bas : Accédez au volet ci-dessous.
  • K ou Flèche vers le haut : Accédez au volet ci-dessus.
  • Q : Affiche brièvement les numéros de volet.
  • O : Parcourez les volets dans l’ordre. Chaque pression vous amène à la suivante, jusqu’à ce que vous les parcouriez en boucle.
  • } : Permute la position du volet courant avec le suivant.
  • { : Permute la position du volet actuel avec le précédent.
  • X : Ferme le volet courant.

Comment Ils se comparent

En termes de fonctionnalité, screen et tmux fonctionnent tous les deux de manière similaire et offrent les mêmes fonctionnalités principales. C’est la façon dont vous accédez à ces fonctionnalités qui est nettement différente. tmux offre des moyens plus lisses et plus confortables d’accéder aux différentes fonctions. Cependant, ce n’est pas la seule différence.

Publicité

La possibilité de renommer les sessions et les fenêtres dans tmux est soignée, et le fait qu’elle conserve les volets lorsque vous rattachez une session change la donne.

screen, en revanche, perd complètement les volets lorsque vous détachez et rattachez une session. C’est presque assez ennuyeux pour vous éviter de vous détacher en premier lieu.

Il y a tellement plus à tmux, y compris ses capacités de script incroyablement flexibles. Tu te dois de le vérifier.

Dave McKay
Dave McKay a utilisé pour la première fois des ordinateurs lorsque le ruban de papier perforé était en vogue, et il programme depuis. Après plus de 30 ans dans l’industrie informatique, il est maintenant journaliste technologique à temps plein. Au cours de sa carrière, il a travaillé en tant que programmeur indépendant, responsable d’une équipe internationale de développement de logiciels, chef de projet de services informatiques et, plus récemment, en tant que Délégué à la protection des données. Dave est un évangéliste Linux et un défenseur de l’open source.Lire la Bio complète «