Screen, la démultiplication de votre terminal

Bonjour à tous,

Non je ne suis pas magicien, et je ne vais pas vous faire apparaître un nouvel écran tout beau tout neuf, en tout cas pas physiquement. Je vais juste vous montrer les bases d’utilisation du logiciel Screen sous linux.

Screen est un logiciel de démultiplexage d’écran. il faut comprendre par là, qu’à l’intérieur d’une session ssh par exemple, vous pourrez ouvrir de nouveaux terminaux virtuel et jongler entre tous. Le plus intéressant dans tout ça c’est que si par exemple vous vous faites déconnecter de votre session ssh de manière non souhaité, vous pourrez à l’aide de Screen, vous rattacher à vos terminaux et les retrouver dans l’État dans lequel vous les aviez laissés.
Pourtant assez connu, je n’ai découvert son utilisation que récemment et je dois dire que j’ai été convaincu. Je voulais vous faire partager cet outil qui j’en suis sure pourra d’une manière ou d’une autre vous aider !

Installation

Je vais vous montrer les fonctionnalités de bases à travers quelques exemples ! Pour cela commencez par vous connecter sur une de vos machine en ssh.

Déjà, assurez vous que Screen est installé :

Si ce n’est pas le cas installez le :

Utilisation

Avant de créer notre premier screen, on va écrire quelque chose pour se rendre compte sur quel terminal nous sommes :

Maintenant nous lançons notre premier screen grâce à la commande :

Tada !!!! Votre screen est créé, vous avez à présent un nouveau terminal à disposition. Pour information, le nom que vous donnez après l’option « -S » (attention c’est un s majuscule..) est complètement arbitraire.
Nous allons de la même manière qu’avant taper un peu de texte pour identifier ce screen et se repérer après :

A savoir qu’une des clés du succès pour l’utilisation de screen réside dans la connaissance des raccourcis claviers. A vrai dire vous n’avez pas vraiment le choix que de les connaitre, mais vous verrez cela vient assez vite !
Par exemple tapez [ctrl]+[a], puis [d], cela aura pour effet de vous « détacher » du screen, vous reviendrez ainsi à votre session SSH initiale.

Pour lister vos screen en cours :

Nous voyons que nous avons bien un screen en cours et qu’il est détaché. Pour vous y rattacher faites :

Et vous retrouverez votre screen que vous aviez quitté auparavant. J’aurais aussi pu utiliser l’id du screen à la place du nom. A noter que si vous n’avez qu’un screen en cours, un « screen -r » aura pour conséquence de vous attacher au seul screen disponible.

Si vous en avez fini avec votre screen et que vous voulez le killer, 2 solutions s’offrent à vous, soit vous tapez « exit » dans votre terminal, soit vous faites [Ctrl][a] + [k], il vous faudra alors confirmer par « y ».

Pas mal non ?! Vous voyez comme cela peut être utile… Quelques exemples :

  • Laisser un terminal en cours et le reprendre plus tard.
  • Faire démarrer un service en mode debug et pouvoir continuer à travailler de manière normal sans être dérangé par les log qui défilent.
  • Vous lancez un script qui prends du temps, plutôt que d’attendre la fin, lancer le dans un screen et faites un tour de temps en temps pour voir où il en est.
  • Etc…

Un nouveau terminal c’est bien, plusieurs c’est mieux !

Recréez un screen :
arnaud@bart:[~] $ screen -S toto

Identifiez le 1er terminal :
arnaud@bart:[~] $ echo "Mon premier terminal"

On va créé un 2ème terminal dans ce screen. Pour cela faites simplement [Ctrl][a] + [c]. Un nouveau terminal devrait apparaître, on va à nouveau écrire un petit truc pour l’identifier.
arnaud@bart:[~] $ echo "Ceci est le 2eme terminal" Ceci est le 2eme terminal

Répétez encore l’opération [Ctrl][a] + [c] pour avoir un 3ème terminal :
arnaud@bart:[~] $ echo "Ceci est le 3eme terminal" Ceci est le 3eme terminal

A ce stade vous avez une instance screen qui tourne avec 3 terminaux associés !

Pour naviguer entre ces 3 terminaux, utilisez les commandes :
[Ctrl][a] + [n] : Affiche le terminal suivant.
[Ctrl][a] + [p] : Affiche le terminal précédent.
[Ctrl][a] + [0 à 9] : Affiche le terminal n° [X].
[Ctrl][a] + [« ] : Vous laisse choisir le terminal via un menu.
[Ctrl][a] + [‘] : Vous laisse choisir le terminal en entrant le n° du terminal.
[Ctrl][a] + [w] : Vous affiche les terminaux en cours.

Lorsque vous utilisez le listing via [Ctrl][a] + [w] ou [« ], vous voyez les noms des terminaux s’afficher en plus de leur ID, car oui ils ont des noms, en revanche par défaut ils s’appellent tous « bash » ce qui vous le reconnaîtrez n’est pas des plus pratique… Pour renommer vos terminaux, aller dans celui qui vous intéresse et faites [Ctrl][a] + [A], un prompt vous proposera de changer le nom. C’est quand même plus convivial avec des noms non 🙂

Splitter son screen

Pour la suite du TP, nous allons d’abord killer notre screen. Si vous êtes encore attaché à votre screen faites [Ctrl][a] + [d] pour vous détacher. Ensuite il vous faut identifier l’id du screen pour le killer :

Maintenant on va voir comment splitter son screen, on va donc récréer un screen :

Vous arrivez dans votre nouveau terminal, jusque là rien de nouveau. Maintenant faites [Ctrl][a] + [S], là votre screen à du être divisé en 2 de manière horizontal. Ce que vous tapez sera uniquement afficher dans la partie du haut. Pour basculer dans l’autre partie, celle du dessous, utilisez [Ctrl][a] + [tab]. Votre curseur a beau être dans la seconde partie, si vous essayez de taper quelque chose il ne se passera rien. Vous devez soit chercher un de vos terminal existant si vous en avez grâce à [Ctrl][a] + [n/p], soit en créer un nouveau avec [Ctrl][a] + [c]. Vous avez donc 2 terminaux différents afficher en même temps !
Naviguer jusqu’à être dans le terminal du dessus et faites [Ctrl][a] + [|] (pipe), vous splittez la zone dans laquelle vous étiez mais de manière vertical cette fois-ci. Répétez l’opération pour créer un nouveau terminal encore et vous devriez obtenir quelque chose de ce genre :

screen_split

Vous pourrez splitter vos terminaux comme bon vous semble sur ce principe. Cela peut être fort utile comme vue si vous voulez comparer des résultats ou des fichiers par exemple.

Si une zone ne vous est plus utile, vous pouvez la supprimer en positionnant votre curseur dedans et en faisant la commande [Ctrl][a] + [X]. Attention cela supprime uniquement la zone, votre terminal lui est toujours accessible. De la même manière si depuis une zone vous tuez un terminal, la zone restera à l’écran mais n’affichera plus aucun terminal.

Conclusion

Vous savez maintenant comment gérer plusieurs terminaux depuis une connexion distante. Je vous ai montré là l’essentiel de l’outil, libre à vous d’approfondir les recherches car screen permet encore bien plus de choses.
Vous trouverez ci-dessous un récapitulatif des commandes utilisées, à imprimer et à accrocher au-dessus de votre bureau 🙂

Depuis la session SSH principale :
screen -S <nom> : Cré un nouveau screen nommé <nom>
screen -ls : Liste les screens disponibles
screen -r <nom ou PID> : Rattaché un screen
screen –help : Affiche l’aide

Depuis un screen :
[Ctrl][a] + [d] : Détache le screen.
[Ctrl][a] + [c] : Créé un nouveau terminaux.
[Ctrl][a] + [n] : Affiche le terminal suivant.
[Ctrl][a] + [p] : Affiche le terminal précédent.
[Ctrl][a] + [0 à 9] : Affiche le terminal n° [X].
[Ctrl][a] + [« ] : Vous laisse choisir le terminal via un menu.
[Ctrl][a] + [‘] : Vous laisse choisir le terminal en entrant le n° du terminal.
[Ctrl][a] + [w] : Vous affiche les terminaux en cours.
[Ctrl][a] + [A] : Renomme le screen en cours
[Ctrl][a] + [k] : Ferme le terminal en cours (nécessite une validation)
[Ctrl][a] + [S] : Split le terminal en cours à l’horizontal
[Ctrl][a] + [|] : Split le terminal en cours à la vertical
[Ctrl][a] + [X] : Supprime une zone du split
[Ctrl][a] + [?] : Affiche l’aide

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.