Ceci est une ancienne révision du document !
Screen, le multiplexeur de terminaux
Screen (GNU/Screen) est un utilitaire 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. Ceci explique sa désignation de «multiplexeur de terminaux». Il offre d'autres services très utiles comme :
- La possibilité d'attacher et de détacher une session, pratique pour reprendre la main sur un irssi.
- La possibilité de partager un terminal avec un autre utilisateur, idéal pour aider un utilisateur distant.
Pré-requis
- Disposer des droits d'administration ;
- Disposer d'une connexion à Internet configurée et activée ;
- Avoir activé l'accès aux dépôts Universe et Multiverse ;
Installation
Installez le paquet screen : 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
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
screen -r
va afficher :
There are several suitable screens on: 13379.toto1 (Detached) 13308.toto2 (Detached) 13356.toto3 (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
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.
Naviguer entre les terminaux du //screen//
- [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.
Fermer un terminal
exit
- [CTRL]+[D] : fermer une console screen. Lorsqu’il n’y a plus qu’une seule console, ça 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 [S]: Sépare la console courante en deux consoles (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.
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.
Liens
- Les pages du manuel man screen et info screen
- La page du projet http://www.gnu.org/software/screen (en)
- Un article sur screen paru sur le Planet de l'APRIL
Contributeurs : Termitor, Benoît « Beny » Pineau, loack, petitchevalroux, gardouille, boubou_cs.