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. 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.
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é.
- Lancer screen en nommant la session
screen -S nom_de_la_session
Un message annoncant la version utilisée et indiquant que ce programme est publiée 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 tape 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 :
Taper 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 :
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
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 screens que l'on va préciser simplement par
screen -r 13379
ou
screen -r toto1
screen -wipe
Créer un nouveau terminal
Taper 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.
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 ["]: propose la liste des différents terminaux, avec la possibilité d'en choisir un.
- [CTRL]+[a] suivi de [w]: Lister les consoles actuelles avec leur nom.
- [CTRL]+[a] suivi de [a]: retourne au terminale d'où l'on vient.
- [CTRL]+[a] suivi de [A]: pour 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 :)
- Lancer screen sur votre machine
screen -S toto
Votre ami se connecte sur votre machine via ssh par exemple et tape la commande suivante
screen -x toto
À partir de là, tout ce qui est tapé 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 d'avoir un fichier de configuration spécifique. Un exemple de "screenrc" 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 parut sur le planet de l'APRIL
—-
Contributeurs : Termitor, Benoît « Beny » Pineau, loack, petitchevalroux, gardouille, boubou_cs.