Gnu Screen

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.

S'il ne l'est pas déjà, installez le paquet 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.

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.

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 régions, sauf la région courante.
  • [CTRL]+[a] suivi de [K]: Tue la console courante ainsi que les processus qui s'y trouvent.
  • [CTRL]+[a] suivi de [X]: Ferme la région courante.
:!: Pour la seconde console, il faut créer un nouveau screen par [CTRL]+[a] suivi de [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.

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

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

  • screen.txt
  • Dernière modification: Le 27/06/2019, 12:34
  • (modification externe)