Screen
Introduction
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.
Installation
L'installation se fait à travers les miroires officiels de chaque distribution.
Pour les distributions Debian et dérivée :
# apt-get install screen
Pour les distributions RedHat et dérivée :
# yum install screen
Commandes utiles
Créer un screen
Pour créer un nouveau terminal saisir:
screen -S <nom>
Détacher un screen
Une fois dans notre session, si on souhaite laisser tourner un programme dedans, en tâche de fond et avoir la main sur la console, on détache le terminal via la commande de touches : “Ctrl+A” puis “D”
Visualiser les screens
Pour visualiser les screens créés, on exécute la commande :
screen -ls
On a leur nom et leur numéro unique.
Se rattacher à un screen
Pour revenir sur un screen détaché, on passe par la commande :
screen -r <nom>
ou bien, si plusieurs screens ont le même nom, on peut les récupérer avec leur numéro :
screen -r <numero>
Parfois, si on est plusieurs à vouloir se rattacher au screen créé on peut utiliser
screen -x <nom>
Pratique pour suivre sur plusieurs consoles des manipulations d'un collègue en étant géographiquement éloignés !
Quitter un screen
Pour quitter un screen, il suffit de faire dans celui-ci la commande exit comme si on fermait une console normale. Si on veut tuer un screen détaché (pour une raison X ou Y) on peut exécuter la commande
screen -X -S lenom kill
Créer un screen en mode détaché
Pour créer un screen, directement en mode “détaché”, il suffit d'utiliser les options d et m
screen -dmS "<titre>" <commande>
Exemple :
screen -dmS optimus optirun read -p optimus
Cela créé une session screen détachée, avec comme nom “optimus” dont la commande lancée dedans est “optirun read -p optimus”
Créer un screen en mode détaché pour un autre utilisateur
Ce cas de figure peut être pratique dans le cas où on veut lancer un screen au démarrage, (donc par root) pour un utilisateur de la machine.
Pour celà, on combine “su” et “screen” :
su - utilisateur -c 'screen -dmS titre commande'
Naviguer dans un screen
Pour naviguer dans les 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.
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.
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.
Annexe
Voici les commande les plus utilisé pour gérer Screen :
- Ctrl+a c Create a new window (with shell)
- Ctrl+a » List all window
- Ctrl+a 0 Switch to window 0 (by number )
- Ctrl+a A Rename the current window
- Ctrl+a S Split current region horizontally into two regions
- Ctrl+a | Split current region vertically into two regions
- Ctrl+a tab Switch the input focus to the next region
- Ctrl+a Ctrl+a Toggle between the current and previous region
- Ctrl+a X Close the current region