(GNU) Screen, le compagnon idéal de ssh ou bien plus qu’un “window manager” en mode texte

Le site officiel de screen et la page de manuel de screen commencent l’introduction par ces mots (en anglais): “Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells.

Une traduction approchée en français pourrait être “Screen est un gestionnaire de fenêtres plein écran qui multiplexe un terminal physique entre plusieurs processus, typiquement des shells interactifs”. Par “gestionnaire de fenêtres” il faut comprendre “gestionnaire de fenêtres en mode texte”, mais quoiqu’il en soit, cette phrase est loin de résumer toutes les possibilités de screen, et loin d’indiquer pourquoi screen est tant utile avec ssh

Lancement de screen, les fenêtres, et le multiplexage…

Commençons par le début! GNU Screen permet en effet de multiplexer un terminal (physique ou virtuel) entre plusieurs processus. Ce terminal que vous multiplexez peut être l’un des terminaux tty1 à tty6 (obtenus en pressant respectivement de [Ctrl]+[Alt]+[F1] à [Ctrl]+[Alt]+[F6]), un terminal virtuel lancé depuis X.Org (comme par exemple avec konsole, gnome-terminal ou xterm), ou bien encore un terminal virtuel distant c’est à dire une session ssh.

Bref, pour lancer screen pour la première fois (lorsqu’il n’est pas encore lancé), tapez tout simplement “screen” depuis votre terminal. Il faut bien sûr que ce programme soit préalablement installé, ce qui est souvent le cas.

00_screen_intro_with_beer_and_pizza_underlined

Au lancement, screen affiche un message classique indiquant le copyright, la licence (libre, GNU GPL version 2 ou ultérieure en l’occurrence), l’adresse pour soumettre les rapports de bugs et pour envoyer bierre et pizzas (quoique je doute que ça soit facile par email…), et surtout vous indique d’appuyer sur [Entrée] ou [Espace] pour continuer. Vous savez donc ce qu’il vous reste à faire!

Ensuite vous arrivez tout simplement sur un terminal virtuel classique, sauf que screen est derrière tout ça et que vous pouvez interagir avec via ses combinaisons de touches (personnalisables, mais on n’évoquera ici que celles par défaut).

Les commandes clavier pour s’adresser à screen commencent par [Ctrl]+[A] (que l’on notera ^A), suivi d’une autre touche ou d’une combinaison de touches. La première commande que je vous suggère d’essayer est “^A ?” ([Ctrl]+[A] suivi de [?]). Cette commande, facile à se rappeller, affiche de façon logique la liste des combinaisons de touches, ce qui s’avère très utile… Vous ferez également par la suite attention aux minuscules et majuscules dans les commandes, car cela compte.

01_screen_help

Vous voilà donc bien armé pour commencer à découvrir screen.

Créons donc des nouvelles “fenêtres”, pour cela il y a principalement deux solutions:

  • la commande “^A c”: crée une nouvelle fenêtre en y lançant le shell et bascule de suite sur cette fenêtre
  • taper screen nom_de_la_commande (une fois que screen est déjà lancé) pour lancer une commande dans une nouvelle fenêtre.

Pour naviguer entre les fenêtres: [Ctrl]+[A] puis ["] (oui la touche guillemet, ici elle fait partie de la commande…).

02_screen_window_list

Vous le remarquerez, trop souvent pas mal de fenêtres ont le même nom… En renommer quelques unes sera donc assez pratique: “^A A”.

Enfin pour détruire une fenêtre, le plus simple est de détruire le processus qu’elle contient: par exemple en tappant exit dans le cas d’un shell bash.

En cherchant un peu, vous pourrez découvrir qu’il est possible de “splitter” (diviser) votre fenêtre, en deux ou en plus, mais je ne présenterais pas tout et je vous laisse chercher un peu…
03_screen_split

Détacher et réattacher des sessions persistantes

GNU Screen ne permet pas uniquement d’avoir l’équivalents des onglets ou des fenêtres multiples en lançant une seule fois le programme ssh…

Un intérêt principal est de pouvoir détacher et réattacher des sessions qui persistent ainsi dans le temps alors même que vos connexions ssh peuvent être interrompues. Cela permet aussi de reprendre par la suite en ssh une tâche que vous avez commencez à faire directement sur la machine.

Poussé à l’extrême, certains l’utilisent par exemple pour chatter sur irc dans le bus, en se connectant automatiquement aux réseaux ouverts qui se présentent au fil du trajet….

Pour “détacher” une session screen deux cas de figure:

  • manuellement, avec “^A d”
  • en fermant le programme ayant appellé screen (par exemple konsole, ou en cas de rupture de connexion ssh, ce qui peut arriver facilement avec du wifi…)

Pour reprendre une session screen interrompue (ie la “ré-attacher”), il faut regarder du côté de “screen -r ” et de ses variantes (le plus adapté pour vous peut différer suivant la situation, je vous laisse donc regarder dans la documentation qui est assez bien faite…).

Le reste?

Malgré sa longueur, cet article ne présente qu’une infime partie des possibilités de screen. Je me suis volontairement limité aux plus courantes de celles que j’utilise fréquemment avec ssh. Après si vous souhaitez exploiter screen à fond, libre à vous de chercher un peu…


(GNU) Screen, le compagnon idéal de ssh ou bien plus qu’un “window manager” en mode texte
(fr) Commenter cet article - Partager - Lire un autre article (Blog de David Dallet)
(en) Comment this post - Share It - Read another post on David Dallet's Weblog

Vus : 781
Publié par Ddmdllt : 31