Une introduction aux multiplexeurs terminaux
avril 20, 2016
par Rares Aioanei
Introduction
Si vous débutez dans l’administration de serveur et la ligne de commande, vous n’avez peut-être pas entendu parler des multiplexeurs de terminaux ou de ce qu’ils font. Vous voulez apprendre à être un bon administrateur système Linux et à utiliser les outils du métier. Ou peut-être êtes-vous déjà un administrateur chevronné et administrez-vous un certain nombre de machines, et souhaitez-vous vous faciliter la vie. Ou peut-être êtes-vous quelque part entre les deux.
Quoi qu’il en soit, cet article expliquera ce que sont les multiplexeurs de terminaux, ce qu’ils font et, surtout, comment vous pouvez bénéficier de leur utilisation.
Un multiplexeur de terminal n’est rien de plus qu’un programme qui permet à son utilisateur de multiplexer une ou plusieurs sessions virtuelles, de sorte que l’utilisateur peut avoir plusieurs sessions à l’intérieur d’un seul terminal. L’une des caractéristiques les plus utiles de ces programmes est le fait que les utilisateurs peuvent attacher et détacher de telles sessions ; On saura bientôt en quoi cela est utile.
Cas d’utilisation
Sessions persistantes
Supposons que vous deviez administrer un serveur distant via ssh/ligne de commande mais que votre connexion n’est pas très stable. Cela signifie que vous devez souvent vous reconnecter et que vous ne voulez pas recommencer à travailler. Les multiplexeurs de terminaux offrent la possibilité de sauvegarder vos sessions entre les connexions afin que vous puissiez continuer là où vous avez commencé.
Veuillez noter que ces sessions ne sont pas persistantes entre les redémarrages (dans notre cas ci-dessus, les redémarrages du serveur auquel vous vous connectez), il est donc préférable de le savoir afin de ne pas s’attendre à une telle fonctionnalité. La raison en est le fait que le multiplexeur exécute des sessions shell, à partir desquelles vous pouvez exécuter un éditeur de texte, un outil de surveillance et ainsi de suite. Étant donné que tous ces processus ne seront plus là après un redémarrage, il n’y a aucune raison pour que cette fonctionnalité soit implémentée car elle n’aurait aucune utilité réelle.
Nous avons parlé dans notre introduction de l’attachement et du détachement : c’est exactement ce que fait cette fonctionnalité. En continuant avec notre cas d’utilisation, où vous avez une connexion instable, une fois que vous êtes déconnecté, vous pouvez simplement simplement vous connecter à nouveau au serveur par ssh et vous rattacher à la session en cours (ou choisir entre les sessions auxquelles vous rattacher) et vous serez là où vous vous êtes < /> arrêté.
Plus d’une fenêtre
Si vous avez l’habitude de paver des gestionnaires de fenêtres – comme dwm, XMonad ou i3 – vous pouvez considérer les multiplexeurs de terminaux comme l’équivalent terminal de ces WM.
Certains plus que d’autres, ils vous offrent plusieurs fenêtres, la possibilité de passer facilement de l’une à l’autre, de modifier les mises en page ou même de redimensionner les fenêtres. Peut-être voulez-vous utiliser un environnement graphique uniquement lorsque cela est nécessaire et passez-vous le reste du temps de l’ordinateur dans une console, ou peut-être n’avez-vous pas le choix, car travailler sur un serveur signifie généralement
ligne de commande uniquement, donc, comme nous l’avons dit, tout ce qui vous facilite la vie en tant qu’utilisateur CLI est plus que bienvenu.
Un autre avantage est la gestion des ressources : si vous travaillez sur une machine contrainte, le fait de n’avoir qu’un seul terminal ouvert un multiplexeur est plus facile sur la consommation de CPU/RAM plutôt que sur plusieurs fenêtres ou onglets. Ou peut-être, selon vos besoins, vous pouvez remplacer complètement l’interface graphique.
Travail collaboratif
Les sessions peuvent non seulement être attachées et rattachées, comme décrit ci-dessus, mais elles peuvent également être partagées. En termes pratiques, cela signifie que plus d’un utilisateur peut s’attacher à une session existante et travailler ensemble comme bon lui semble.
Multiplexeurs terminaux
Liste des multiplexeurs de terminaux
Ce qui suit est une liste de multiplexeurs de terminaux et tout ce dont vous avez besoin pour commencer, y compris l’installation, l’utilisation de base, les fonctionnalités et, bien sûr, une comparaison entre eux afin que vous puissiez décider plus facilement ce qui vous convient le mieux et ce qui correspond le mieux à vos besoins.
Si vous débutez, ce serait peut-être une bonne idée de tous les essayer, car la liste n’est pas longue, et de voir par vous-même ce qui vous convient le mieux. Nous fournirons de toute façon des captures d’écran pour les impatients, mais nous sommes d’avis que rien n’est mieux lorsqu’il s’agit de décider quoi utiliser que l’utilisation directe, donc si vous avez le temps, essayez-les. Comme d’habitude, nous n’essaierons pas de remplacer les pages de manuel de l’un des programmes présentés ci-dessous, donc pour une référence complète, veuillez utiliser 'man $program' pour obtenir les informations complètes.
Ecran GNU
L’un des logiciels de multiplexage de terminaux les plus populaires (si ce n’est le leader, en fait) sur les systèmes de type Unix est GNU screen - d’où le nom d’écran par souci de brièveté. screen offre une pléthore de fonctionnalités suffisamment large pour lui permettre d’avoir un groupe d’utilisateurs stables et dévoués. Comme son nom l’indique, screen est publié sous GPLv3 et est associé au projet GNU dans son ensemble. Un concept essentiel à l’utilisation quotidienne de screen (et d’autres logiciels similaires) est le raccourci de commande. Un raccourci de commande est une combinaison de touches, qui est personnalisable via un fichier de configuration ou par d’autres moyens (comme le code source, par exemple), qui est suivie d’une frappe qui permet à l’utilisateur d’envoyer une commande au multiplexeur.
Prenons un exemple simple : peut-être la commande la plus utilisée dans les logiciels si ce type est celui qui crée une nouvelle fenêtre. Donc, ce que nous devrons faire est d’appuyer sur le raccourci de commande suivi d’une touche qui indique à l’écran de créer une nouvelle fenêtre pour nous. Le raccourci de commande par défaut à l’écran est Ctrl+A (pour le reste de cet article, nous utiliserons la notation C-a), et la commande qui suit est 'c', qui signifie créer. Mais commençons par le début et voyons comment installer screen. Dans Debian/Ubuntu et d’autres distributions Linux basées sur Debian, la commande d’installation est
sudo apt-get install screen
Sur les distributions basées sur Fedora et Redhat, vous pouvez installer screen en exécutant la commande linux suivante :
sudo yum install screen
En ce qui concerne Fedora, sur les dernières versions de celui-ci, vous devrez peut-être remplacer yum par dnf, car il est devenu l’outil de gestion de paquets en ligne de commande par défaut. Mais la commande ci-dessus devrait fonctionner, car elle vous avertira que yum est obsolète et vous redirigera vers dnf. Étant donné que GNU screen a une longue histoire derrière lui (la première annonce de sortie a été faite sur net.sources en 1987), il est devenu assez omniprésent sur presque tous les systèmes d’exploitation qui ont quelque chose à voir avec Unix.
Si vous êtes à l’intérieur de X, ouvrez une fenêtre de terminal (ou utilisez un ATS) et tapez « screen ». Vous remarquerez peut-être que votre type de terminal est passé à « screen ». Cela peut être vérifié en tapant
echo $TERM
après l’écran de démarrage.
Maintenant que vous avez commencé avec screen, tapez la commande pour créer une nouvelle fenêtre et voir ce qui se passe (C-a + c). Si vous vous attendez à un panneau graphique montrant que vous avez maintenant deux fenêtres, vous serez un peu déçu. Vous serez redirigé vers une nouvelle fenêtre, mais c’est tout. Nous allons maintenant voir comment naviguer entre les fenêtres. Si vous savez à quelle fenêtre vous voulez aller – ce qui est particulièrement utile lorsque vous n’en avez que quelques-unes ouvertes – vous pouvez utiliser C-a suivi d’un caractère '. Vous serez invité à entrer l’identifiant de la fenêtre et, après l’avoir entré, vous serez redirigé vers ladite fenêtre. Le changement de fenêtre peut également être effectué plus directement avec C-a + $identifier, où $identifier est, du moins pour l’instant, le numéro de la fenêtre, ou, encore plus simple, en utilisant C-a + Tab (tout comme Alt+Tab dans de nombreux gestionnaires de fenêtres). Pour accéder à la dernière fenêtre utilisée, il suffit de taper deux fois C-a. Si, par exemple, vous avez besoin de suivre la sortie d’une console tout en travaillant sur autre chose, vous avez la commande split – C-a + S (notez le s majuscule là-dedans).
Une fonctionnalité dont nous avons parlé plus tôt est celle qui vous permet de détacher/attacher des sessions à volonté. À titre d’exemple, vous souhaitez peut-être fermer le terminal client pour, par exemple, un redémarrage, puis pouvoir revenir à votre session à distance. Utilisez C-a + C-d pour faire la partie de détachement, et en revenant, ajoutez simplement -S comme argument à l’écran, après le nom de la session. Pour obtenir la liste des affichages connectés, utilisez C-a, suivi de * (astérisque).
D’autres fonctionnalités incluent le copier-coller (C-a + [ pour copier et C-a + ] pour coller), le nommage des fenêtres (C-a + A) ou des informations sur la fenêtre (à savoir, vous pouvez afficher des informations sur la fenêtre actuelle dans la ligne de message - utilisez C-a + C-i pour cela). Enfin, la destruction d’une fenêtre se fait en utilisant C-a + k.
Quelques notes qui méritent d’être rappelées : D’abord, ce que vous avez lu ci-dessus ne fait qu’effleurer la surface ; screen est un programme performant et nous n’avons sélectionné que ce que nous considérons comme le plus important pour qu’un utilisateur puisse commencer. Veuillez vous référer à la documentation, en ligne ou à la page de manuel, pour l’ensemble des fonctionnalités. Deuxièmement, si vous utilisez bash et/ou
emacs, vous voudrez peut-être modifier le raccourci de commande par défaut (C-a), car il interférera tôt ou tard avec les raccourcis des programmes respectifs. La façon de changer le raccourci de commande est laissée à l’appréciation du lecteur.
tmux
L’alternative la plus populaire à l’écran GNU est probablement tmux. Contrairement à lui, il est sous licence BSD et fait même partie de l’installation par défaut de certains systèmes d’exploitation BSD, comme OpenBSD et NetBSD. Cependant, cela ne signifie pas qu’il n’est pas facilement disponible dans la plupart des distributions Linux. Pour les systèmes basés sur Debian/Ubuntu, il suffit de taper
sudo apt-get install tmux
, tandis que pour les systèmes basés sur Redhat/Fedora, la commande install serait
sudo yum install tmux
Maintenant que vous êtes un peu familier avec les multiplexeurs de terminaux, nous allons sauter les bases, comme la définition d’un raccourci de commande et ainsi de suite, et aller droit au but. Démarrez donc un terminal et tapez simplement 'tmux'. Vous verrez, si le processus d’installation s’est terminé avec succès, quelque chose de très similaire à ceci :
La première chose que vous remarquerez est le fait que tmux affiche par défaut une ligne de message, par opposition à l’écran. Mais commençons par le début : le raccourci de commande par défaut dans tmux est Ctrl + b (C-b), suivi de la commande respective. Après avoir parcouru cet article, vous remarquerez que certaines des commandes de base sont similaires entre les multiplexeurs de terminaux ; ainsi, pour créer une nouvelle fenêtre dans tmux, la commande est 'c' (la commande complète serait C-b + c). Notez que la ligne de message affiche désormais les deux fenêtres, ainsi que leurs identificateurs par défaut, qui sont des entiers positifs, à partir de 0. Pour naviguer vers une autre fenêtre, vous pouvez utiliser son identifiant respectif (par exemple C-b + 1) ou, pour accéder à la dernière fenêtre utilisée, utiliser C-b + l.
Les commandes sont généralement assez simples et faciles à prendre en main, car elles suivent généralement la règle de la lettre initiale – « c » pour créer, « l » pour dernier et ainsi de suite. Encore une fois, reportez-vous à la page de manuel pour une liste complète des commandes.
Avec un simple émulateur de terminal (c’est-à-dire sans multiplexeur), vous remarquerez que vous pouvez facilement faire défiler vers le haut à l’aide de la molette de défilement de la souris ou de Maj + PageUp. TMUX, comme les autres multiplexeurs, a ses propres règles concernant le copier/coller/défiler, donc le défilement habituel décrit ci-dessus ne fonctionnera plus. C-b + [ entre dans l’étape : cette commande vous permettra de copier du texte ou de faire défiler le texte vers le haut. Avec C-b + ] vous pouvez coller le texte le plus récemment sélectionné, et si vous souhaitez sortir du mode copier/défilement, tapez 'q'.
Comme l’écran, tmux offre la possibilité d’attacher/détacher des sessions ; Cette caractéristique, comme indiqué précédemment, est l’une des plus importantes pour tout multiplexeur terminal qui se respecte.
L’un des scénarios les plus simples est celui où l’utilisateur s’est, pour diverses raisons, déconnecté de la session active et souhaite y revenir dès que possible. C-b + d sert à détacher la session (la session en cours) puis, en revenant au terminal, il suffit de taper 'tmux attach' et c’est tout, on revient là où on s’est arrêté. La façon dont vous pouvez vous attacher à la session de votre choix, à condition qu’il y en ait plusieurs, est laissée à l’utilisateur comme exercice.
dvtm
Enfin, nous avons dvtm, dont on peut d’abord dire qu’il s’agit de la ressemblance la plus (du moins de notre humble liste) d’un gestionnaire de fenêtres en mosaïque.
Ce n’est pas que screen ou tmux n’ont pas les capacités nécessaires, c’est juste que dvtm ressemble à ça par défaut, comme vous pouvez le voir ici :
Pour commencer depuis le début, afin de l’installer sur Fedora ou CentOS, il suffit de faire
sudo yum install dvtm
, en notant que sur CentOS, vous aurez besoin que le référentiel EPEL soit activé et fonctionnel, car les dépôts par défaut n’ont pas dvtm disponible. Sur les distributions basées sur Debian, la commande utilisée pour l’installation doit être
sudo apt-get install dvtm
Puisque vous êtes maintenant plus familier avec les multiplexeurs, entrons dans le vif du sujet. Il suffit de taper 'dvtm' dans un terminal et le tour est joué. Le raccourci de commande ici est Ctrl + g (C-g), donc, comme nous l’avons vu précédemment, pour créer une nouvelle fenêtre, il suffit de faire C-g + c. Vous pouvez simplement changer le raccourci de commande par défaut en, disons, C-y (assurez-vous que cela n’interférera pas avec d’autres raccourcis tels que définis peut-être par votre gestionnaire de fenêtres ou votre environnement de bureau en premier), vous pouvez appeler/démarrer dvtm ainsi : 'dvtm -m ^y'.
La fermeture des fenêtres se fait par défaut avec C-g + x, et la commutation se fait à l’aide des touches j et k. Vous aurez, surtout si vous êtes un utilisateur passionné de vi/vim, certaines similitudes avec les raccourcis d’un certain éditeur de texte, donc vous devriez être chez vous si vi/vim est votre truc. Comme nous l’avons vu dans la section tmux, l’utilisation de C-g + $window_number devrait vous amener à la fenêtre dont vous avez besoin, et dvtm dispose également d’une fonctionnalité qui vous permet d’envoyer des entrées à toutes les fenêtres visibles : utilisez C-g + a pour cela, suivi de la commande/entrée à envoyer ; utilisez à nouveau C-g + a pour rétablir un comportement normal.
Nous arrivons maintenant à la partie que nous avons déjà évoquée précédemment, les similitudes avec les WM de pavage. dvtm propose les options suivantes en ce qui concerne les mises en page :
- empilement vertical – cela signifie que la zone dite principale obtient la moitié gauche de l’écran et que le reste est empilé dans la moitié droite
- Pile inférieure - comme vous l’avez déjà deviné, fondamentalement la même, mais la zone principale est sur la moitié supérieure et le reste empilé dans la moitié inférieure
- grille – toutes les fenêtres obtiennent une part égale de l’écran
- Plein écran - le nom dit tout - toutes les fenêtres bénéficient de tout l’espace d’écran disponible
En ce qui concerne les modes copier/coller, comme décrit dans la section tmux, le principe est le même, la façon dont c’est fait et les raccourcis diffèrent. C-g + e dirige le tampon de défilement vers un éditeur externe, tandis que ce que ledit éditeur écrit sur la sortie standard peut ensuite être collé avec C-g + p.
Enfin, la fonctionnalité de détachement/attachement est là, mais elle est réalisée à l’aide d’outils externes. Bien que cela semble un repoussoir au début, rappelez-vous que dvtm est tout au sujet de la simplicité et de l’adhésion au principe Unix de faire une chose et de la faire bien. L’outil externe que nous allons utiliser s’appelle abduco et vous pouvez l’utiliser comme ceci :
abduco -c dvtm-session
à attacher. Il s’agit généralement d’une installation distincte et cela peut être fait de la même manière que vous l’avez déjà utilisé pour installer tmux, et encore une fois, sur CentOS et d’autres dérivés de RHEL, vous aurez besoin d’activer EPEL pour que l’installation fonctionne. Ensuite, le détachement se fait à l’aide de C-g +\et le rattachement se fait avec
abduco -a dvtm-session
Comme alternative à abduco, vous pouvez utiliser dtach, et la façon de le faire est laissée à l’appréciation du lecteur.
Conclusion
Nous espérons vous avoir donné tout ce dont vous auriez besoin pour commencer à utiliser les multiplexeurs de terminaux ou au moins vous offrir de nouvelles informations à ce sujet si vous en avez déjà utilisé certains ou même tous. Vous vous demandez probablement déjà : « OK, je comprends, mais lequel dois-je utiliser ? » – la réponse à cette question est « Celui qui vous convient le mieux ».
Il y a deux choses ici : d’une part, il y a trop de scénarios d’utilisation et de cas d’utilisation pour pouvoir donner une réponse définitive et d’autre part, rappelez-vous que les trois multiplexeurs de terminaux que nous avons abordés sont probablement les plus populaires dans le domaine, mais en aucun cas les seuls. Nous vous disons donc de les utiliser, de les essayer, de les modifier au mieux pour les adapter à vos besoins et vous saurez alors ce que vous voulez utiliser.
Mieux encore, si vous avez le temps et les compétences et que vous avez besoin d’une fonctionnalité qui n’est pas (encore) là, ouvrez une demande de fonctionnalité ou mieux encore, piratez le programme vous-même et partagez votre code. Nous ne pouvons qu’espérer que vous apprécierez ces outils et que vous deviendrez plus efficace dans votre travail.
