guest@6admin.io:~$

Screen : un multiplexeur de terminal

Screen est un multiplexeur de terminal qui, à la manière d’un gestionnaire de fenêtrage, permet à plusieurs programmes en mode texte de tourner en même temps depuis une seule interface, typiquement un terminal local ou distant via ssh (non, rien à voir avec nohup que j’utilise principalement pour certains scripts avec wget).

Installation

Sous Gentoo:

logout@lifthrasir ~ $ su -c "emerge app-misc/screen"
Password:
[...]

Sous Debian:

logout@helghardhr:~$ sudo apt-get install screen
Password for user logout:
[...]

Passons à la pratique

Nous allons créer une session screen pour prendre la main sur un switch:

logout@lifthrasir ~ $ screen -S elivghar

Ici nous avons donc créé une session screen du nom d’elivghar. Nous pouvons vérifier avec la commande screen -ls:

logout@lifthrasir ~ $ screen -ls
There are screens on:
        15115.irc       (Detached)
        15098.elivghar  (Attached)
2 Sockets in /tmp/screens/S-logout.

Deux sessions: une détachée (irc), une attachée (elivghar, celle qu’on vient de créer). Le détachement se fait avec Ctrl+A D et la reconnexion avec screen -r elivghar. La session survit au logout: si le SSH coupe, le process continue de tourner dans la session screen et on le retrouve au prochain login.

Les raccourcis indispensables:

  • Ctrl+A C : nouvelle fenêtre
  • Ctrl+A N : fenêtre suivante
  • Ctrl+A P : fenêtre précédente
  • Ctrl+A D : détacher la session
  • Ctrl+A K : tuer la session
  • Ctrl+A " : liste des fenêtres

C’est l’outil qui a survécu à toutes les sessions SSH depuis 1987 et qui a fait la fortune des sysadmin qui ne veulent jamais perdre un process de longue durée parce que le SSH a coupé.