Agence web » Actualités du digital » Comment utiliser tmux sur Linux (et pourquoi c'est mieux que l'écran)

Comment utiliser tmux sur Linux (et pourquoi c'est mieux que l'écran)

Linux tmux la commande est un multiplexeur de terminal, comme screen. Ses défenseurs sont nombreux et vocaux, nous avons donc décidé de comparer les deux. Est tmux vraiment mieux, ou s'agit-il simplement de préférer ce que vous savez?

tmux vs écran

Les deux tmux et GNU screen les commandes sont des multiplexeurs de terminaux. Ils vous permettent d'avoir plusieurs fenêtres dans une seule fenêtre de terminal et de sauter entre elles. Une fenêtre peut être divisée en volets, dont chacun vous donne une ligne de commande indépendante.

Vous pouvez également détacher une session et elle 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.

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

Quelle est la commande d'écran?

le screen La commande 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 fonction ou fonction.

Une seule chose nous ennuyait screen. Nous couvrirons cela lorsque nous y arriverons, et voir si tmux s'en sort mieux.

Installer tmux

Tandis que screen est généralement installé par défaut sur les distributions Linux populaires, tmux non. À 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émarrer une session tmux

Commencer tmux, tapez-le et appuyez sur Entrée:

tmux

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

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:

  • (0): Il s'agit du nom de la session. Par défaut, ils sont numérotés, en commençant par zéro. Nous expliquons ci-dessous comment vous pouvez donner des noms significatifs aux sessions.
  • 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 un tmux session, son numéro de fenêtre et le nom du programme en cours d'exécution sont ajoutés à la barre d'état.

le screen La commande 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.

Du côté positif, vous ne perdrez pas une ligne de fenêtres de terminal. Bien sûr, vous étendez normalement votre fenêtre de 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 vraiment un problème. Nous avons laissé ici les images des fenêtres du terminal à la taille par défaut afin que vous puissiez voir les informations.

Des commandes sont données à tmux à l'aide de touches, et il y a deux parties à cela. Tout d'abord, vous appuyez sur Ctrl + B pour obtenir tmuxL’attention. 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 pareil 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 ensuite invité à confirmer que vous souhaitez supprimer la fenêtre.

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; O ou N suffit pour enregistrer votre choix.

Si vous appuyez sur Y, la fenêtre se ferme. Étant donné qu'il s'agit de la seule fenêtre de cette session, la session est terminée.

le tmux la session est fermée et vous revenez à la ligne de commande à partir de laquelle vous avez lancé tmux. Vous verrez «(quitté)» dans la fenêtre du terminal.

Cela peut sembler énoncer 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 commencez régulièrement plusieurs tmux sessions, vous apprécierez rapidement la fonctionnalité de donner à chacun d'eux un nom significatif. Vous pouvez nommer les sessions dans screenégalement, mais ils ne s'affichent nulle part dans les fenêtres de session.

Commencer tmux avec un nom de session, utilisez le new (nouvelle session) et la commande -s option (nom de session). Notre session va s'appeler «geek-1», nous tapons donc ce qui suit:

tmux new -s geek-1

Quand le tmux la session se charge, «geek-1» s'affiche comme première entrée dans la barre d'état, à l'extrême gauche.

Ajouter plus 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. Nous allons donc avoir quelque chose en cours d'exécution dans cette nouvelle fenêtre, commençons la dmesg commande avec le -w (suivre) option:

dmesg -w

Nous avons maintenant deux fenêtres dans la session; on court top, et l'autre dmesg. Cependant, nous ne pouvons en voir qu'un à la fois (plus à ce sujet dans un instant).

Jetez un œil sur le côté gauche de la barre d'état. Nous sommes toujours dans le "geek-1" tmux session. Dans la fenêtre zéro, le haut est en cours d'exécution et dans la fenêtre un, 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: Affichez la fenêtre suivante.
  • P: Affiche la fenêtre précédente.
  • 0 à 9: Affichez 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.

Pour déplacer la barre de surbrillance ambre, appuyez sur les flèches haut ou bas, Accueil ou Fin. La partie 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 sur É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 de fonctionner en arrière-plan, mais vous ne pourrez pas le voir ni interagir avec.

Nous avons commencé top dans la session, nous avons donc un processus en cours pour démontrer. Ensuite, nous appuyons sur Ctrl + B, puis sur D. La session disparaît et devient une session d'arrière-plan.

Nous revenons à la fenêtre du terminal d'origine. Il y a un message de tmux nous disant 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 joindre une session individuelle, nous utiliserons l'explication explicite attach-session commande avec le -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 longs ou continus que vous avez lancés avant de détacher la session seront toujours exécutés en arrière-plan (à moins qu'ils ne soient terminés) lorsque vous attachez la session.

screen peut le faire, mais pas de manière aussi intuitive.

Gestion de plusieurs sessions

Ouvrons une autre fenêtre de terminal et commençons une nouvelle tmux session intitulée «geek-2»:

tmux new -s geek-2

Dans cette session, nous allons commencer dmesg:

dmesg -w

Maintenant, nous avons notre "geek-1" d'origine tmux session, et une nouvelle appelée "geek-2".

La barre d'état nous montre que cette session est appelée "geek-2", et elle a une fenêtre qui fonctionne dmesg.

Si nous appuyons sur Ctrl + B, puis sur D, nous dissocions cette session.

De retour dans le "geek-1" tmux session, nous appuyons sur Ctrl + B, puis sur S pour voir une liste de tmux séances.

Pour être clair, voici 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 ambre 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.

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

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

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

Travailler avec des panneaux de fenêtre

Si vous appuyez sur Ctrl + B, puis doublez les guillemets (""), vous divisez la fenêtre horizontalement en deux volets.

Cela n'affecte que la fenêtre actuelle; les autres participants à la session ne seront pas modifiés. Nous avons utilisé le 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 fenêtre un. Si nous sautons vers 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 coquilles distinctes et séparées. 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 à un autre, appuyez sur Ctrl + B, puis sur les flèches Haut, Bas, Gauche ou Droite.

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

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

Ces numéros 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 quelles.

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

le screen La commande a également des volets, mais, encore une fois, ils sont moins intuitifs à utiliser. La chose qui nous ennuie screen si vous détachez une session avec des volets, ils disparaissent lorsque vous rattachez cette session. Cela vieillit très rapidement.

A Ctrl + B Cheat Sheet

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

Commandes de session

  • S: Liste des sessions.
  • $: Renommez la session en cours.
  • RÉ: Détachez la session en cours.
  • Ctrl + B, puis?: Afficher la page d'aide dans tmux.

Commandes de fenêtre

  • C: Créez une nouvelle fenêtre.
  • ,: Renommez la fenêtre actuelle.
  • W: Répertoriez les fenêtres.
  • N: Passez à la fenêtre suivante.
  • P: Passer à la fenêtre précédente.
  • 0 à 9: Déplacer vers le numéro de fenêtre spécifié.

Commandes du volet

  • %: Créez une division horizontale.
  • ": Créez une séparation verticale.
  • H ou flèche gauche: Accédez au volet de gauche.
  • I ou flèche droite: Accédez au 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: Afficher brièvement les numéros des volets.
  • O: Déplacez-vous dans les volets dans l'ordre. Chaque pression vous amène à la suivante, jusqu'à ce que vous les parcouriez toutes.
  • }: Échangez la position du volet actuel avec le suivant.
  • {: Échangez la position du volet actuel avec le précédent.
  • X: Fermez le volet actuel.

Comment ils se comparent

En termes de fonctionnalité, screen et tmux les deux fonctionnent 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. Mais ce n’est pas la seule différence.

La possibilité de renommer des sessions et des fenêtres dans tmux est soigné, et le fait qu'il 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. Vous vous devez de le vérifier.

★★★★★