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 :
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
Pour créer un nouveau terminal saisir:
screen -S <nom>
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”
Pour visualiser les screens créés, on exécute la commande :
screen -ls
On a leur nom et leur numéro unique.
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 !
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
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”
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'
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.
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.
Voici les commande les plus utilisé pour gérer Screen :