Screen, le multiplexeur de terminaux

Screen (GNU Screen) est un « multiplexeur de terminaux » permettant d'ouvrir plusieurs terminaux dans une même console, de passer de l'un à l'autre et de les récupérer plus tard.

Il offre d'autres services très utiles comme :

  • La possibilité d'attacher et de détacher une session, pratique par exemple pour reprendre la main sur un client IRC tel que Irssi ou Weechat.
  • La possibilité de partager un terminal avec un autre utilisateur, idéal pour aider un utilisateur distant.

Pré-requis

Installation

S'il ne l'est pas déjà, installez le paquet screen

Exemple d'utilisation de Screen

Nous allons lancer dans le screen une application en ligne de commande, puis « nous détacher » de la session du screen en laissant l'application tourner dedans. Ensuite, à partir du même poste ou d'un poste distant (avec ssh par exemple) nous pourrons « nous rattacher » à la session du screen et récupérer exactement la même chose que lorsque nous nous étions détaché.

  • Créer un nouveau screen en nommant la session :
screen -S nom_de_la_session

Un message annonçant la version utilisée et indiquant que ce programme est publié sous licence GPL s'affiche à l'écran. Il ne reste plus qu'à presser la touche [ESPACE].

La nouvelle session du shell s'affiche et attend qu'on saisisse une commande, par exemple :

echo test

Le shell se présente alors comme ça :

foo@bar $ echo test
test
foo@bar $
  • Pour se détacher de la session du screen :

Saisir la suite de touche clavier suivante : [CTRL]+[a] suivi de [d]

OU fermer le terminal et/ou ouvrir un autre terminal

  • Pour se rattacher à la session du screen :
screen -r nom_de_la_session
Le rattachement à la session du screen peut très bien se faire à distance. Nous accédons alors à notre machine via un accès ssh par exemple.

Utilisation

Lancement de Screen

  • Créer un nouveau screen en nommant la session :
    screen -S toto

Une fois passé l'écran de version, nous avons devant nous un terminal prêt à servir, nous pouvons l'utiliser comme d'habitude (en dehors des applications en mode graphique).

  • Connaître les screen existants :
    screen -ls
  • Rattacher un screen existant :
    screen -r

Si plusieurs screen sont en cours d'exécution, voilà ce que

screen -r

va afficher :

There are several suitable screens on: 
      13379.toto1 (Detached) 
      13308.toto2 (Detached) 
      13334.toto3 (Attached) 
      13356.toto4 (Dead ???)

Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Nous avons donc le choix entre plusieurs screen que l'on va préciser simplement par

screen -r 13379

ou

screen -r toto1

Si le screen que nous essayons de rattacher n'a pas été détaché (toto3 dans l'exemple ci-dessus), il est possible de forcer son détachement de la console précédente :

screen -d toto3

Pour avoir plusieurs attachements simultanés (option "-x"), voir la section Partager un terminal.

Si un screen est mort (toto4 dans l'exemple ci-dessus), il est possible de le supprimer en saisissant la commande

screen -wipe

Créer un nouveau terminal

Saisir la suite de touche clavier suivante : [CTRL]+[a] suivi de [c]

Si vous avez auparavant exécuté une commande, le contenu du terminal devrait visiblement changer : vous êtes dans le nouveau terminal dont vous venez de demander la création.

  • [CTRL]+[a] suivi de [n]: pour «next», aller au terminal suivant.
  • [CTRL]+[a] suivi de [p]: pour «previous», aller au terminal précédent.
  • [CTRL]+[a] suivi de [0]..[9]: aller au terminal n.
  • [CTRL]+[a] suivi de [']: saisir dans le prompt le numéro du terminal.
  • [CTRL]+[a] suivi de ["]: lister des différents terminaux, avec la possibilité d'en choisir un.
  • [CTRL]+[a] suivi de [w]: lister les terminaux actuels avec leur nom.
  • [CTRL]+[a] suivi de [a]: retourner au terminal d'où l'on vient.
  • [CTRL]+[a] suivi de [A]: nommer les terminaux et s'y rendre par la suite plus aisément.

« Tuer » un screen

Lorsque on est logué sur un screen, pour le « tuer » (kill) :

exit
  • [CTRL]+[D] : équivalent à exit. Lorsqu’il n’y a plus qu’une seule console quitte screen.
  • [CTRL]+[A] puis :quit le ferme également. Lorsqu'il n'y a plus qu'une seule console quitte screen.

Détacher screen

  • [CTRL]+[a] suivi de [d]: pour détacher screen
  • [CTRL]+[a] suivi de [DD]: pour détacher screen et fermer la session

Partager un terminal

Imaginez que vous vouliez que quelqu'un fasse quelque chose à distance sur votre machine, mais que vous souhaiteriez voir ce qu'il fait, alors screen va vous aider :)

  • Créer un nouveau screen en nommant la session :
screen -S toto

Votre ami se connecte sur votre machine via ssh par exemple et saisit la commande suivante :

screen -x toto

À partir de là, tout ce qui est saisi dans un des 2 terminaux (le vôtre ou le sien) apparaît sur les deux. Si il n'y a qu'un seul screen de lancé, il n'est pas nécessaire de préciser son nom lors de la connexion.

Raccourcis supplémentaires

Séparation de la console :

  • [CTRL]+[a] suivi de [AltGr]+[6] (|): Sépare la console courante en deux consoles verticalement (la console courante devient celle de gauche).
  • [CTRL]+[a] suivi de [S]: Sépare la console courante en deux consoles horizontalement (la console courante devient celle du dessus).
  • [CTRL]+[a] suivi de [TAB]: Une fois la console séparée, ce raccourci permet de se positionner sur la console suivante.
  • [CTRL]+[a] suivi de [Q]: Supprime toutes les consoles, sauf la console courante.
  • [CTRL]+[a] suivi de [K]: Supprime la console courante.
:!: Pour la seconde console, il faut créer un nouveau screen par [CTRL]+[a] suivi de [AltGr]+[c] :!:

A noter que la suppression d'une ou plusieurs régions ne supprime pas les consoles qui s'y trouvaient.

Divers :

  • [CTRL]+[a] suivi de [F]: Redimensionnement de la fenêtre à la taille de son terminal. Utile lorsque l'on est plusieurs sur une même console et que l'on enrage de ne pas avoir un écran 16/9e.
  • [CTRL]+[a] suivi de [H]: Permet de logguer tout ce qui passe à l'écran dans un fichier $HOME/screenlog.XX (XX : no de la console)
  • [CTRL]+[a] suivi de [?]: Affiche une petite aide

Déplacement et copie :

  • [CTRL]+[a] suivi de [ESC]: Entre en mode copie/scrollback. On peut se déplacer dans le screen avec les flèches directionnelles.
  • ENTER : Permet de commencer une sélection. Appuyer une nouvelle fois sur ENTER pour terminer la sélection.
  • [CTRL]+[a] suivi de []]: Colle le contenu sélectionné précédemment.

Personnaliser son screen

Il est possible pour chaque utilisateur du système de personnaliser son screen grâce à un fichier de configuration spécifique : «~/.screenrc». Un exemple d'un tel fichier est disponible dans /etc/screenrc. Il vous suffit de faire :

cp /etc/screenrc ~/.screenrc

Et vous pourrez ensuite le personnaliser comme bon vous semble.

Il est possible de changer le caractère d'échappement (CTRL+a). De cette manière, vous avez un caractère d'échappement sur votre machine et un différent sur une machine distante. Et grâce à cela, vous pouvez faire du screen dans un screen. http://forum.ubuntu-fr.org/viewtopic.php?id=846021

Voir aussi


Contributeurs : Termitor, Benoît « Beny » Pineau, loack, petitchevalroux, gardouille, boubou_cs, mydjey

  • screen.txt
  • Dernière modification: Le 28/04/2018, 11:21
  • (modification externe)