screen : Un multiplexeur de terminal pratique
Table des matières
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 peut être pratique lorsque l'on souhaite lancer plusieurs commandes, et que la machine est à distance. Cela évite d'ouvrir plusieurs connexions SSH par exemple.
Aussi, si la connexion réseau coupe, lors de la reconnexion, on peut récupérer le shell tel qu'il était avant la perte de connexion.
Il suffit d'installer le paquet screen :
Red Hat / Fedora et dérivées (EPEL requis) :
Debian / Ubuntu :
Gentoo :
Pour créer un nouveau terminal :
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 consulter les screens créés :
On a leur nom et leur numéro unique.
Pour revenir sur un screen détaché :
ou bien, si plusieurs screens ont le même nom, on peut les récupérer avec leur numéro :
Si on veut se rattacher à un screen déjà attaché (si on est plusieurs à vouloir se rattacher au screen ou si on a perdu une connexion et que le screen est resté "attaché" à une session fantôme) :
Cela est pratique pour suivre sur plusieurs consoles des manipulations d'un collègue en étant géographiquement éloigné ou dans le cadre de formations.
Pour quitter un screen, il suffit de faire dans celui-ci la commande exit comme si on fermait une console normale. On revient alors sur le shell qui a lancé la commande screen précédemment.
Si on veut tuer un screen détaché (pour une raison X ou Y) :
Pour créer un screen, directement en mode "détaché", il suffit d'utiliser les options d et m :
Ce cas de figure peut être pratique dans le cas où on veut lancer un screen pour un utilisateur de la machine.
Pour celà, on combine su et screen :
Si on souhaite remonter dans un screen et que la console est trop petite, la molette de la souris ne fonctionne pas.
Il faut donc passer en "copy mode" avec Ctrl+a et [
Ensuite voici les combinaisons possibles :
Page Up et Page Down : Monter ou Descendre d'une page
Pour quitter ce mode : q
Il est possible d'utiliser screen de façon plus avancée, et de lancer plusieurs terminaux dans un même screen (comme des onglets dans une fenêtre).
Pour lancer un autre terminal dans un screen créé précédemment : Ctrl + a puis c
On notera que dans le titre de la fenêtre de l'émulateur de terminal "screen 1 est indiqué".
On va pouvoir basculer entre ces terminaux via les raccourcis suivants :
Ctrl + a puis n : Aller au terminal suivant
Ctrl + a puis p : Aller au terminal précédent
Ctrl + a puis 1 : Aller au terminal numéro 1 (Fonctionne de 0 à 9)
Ctrl + a puis " : Liste les terminaux actifs dans le screen pour s'y rendre
Ctrl + a puis A : Renommer un terminal pour le retrouver plus facilement
Il est possible de splitter l'écran de screen en plusieurs terminaux. Ce qui permet, sur 1 écran, d'avoir 2 terminaux. Cela peut être utile dans certains cas.
Pour splitter en 2 verticalement : Ctrl + a puis | (AltGr+6)
Pour splitter en 2 horizontalement : Ctrl + a puis S
Pour basculer sur les différents terminaux de ce screen splitté : Ctrl + a puis TAB
La zone ouverte est vierge, on lancera un screen avec le shell via Ctrl + a puis c
Une fois le shell quitté, la zone est toujours là. Pour la fermer Ctrl + a puis X
Dans un screen : Ctrl + a puis ?
Depuis le shell :
Qu'est ce que screen ?
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 peut être pratique lorsque l'on souhaite lancer plusieurs commandes, et que la machine est à distance. Cela évite d'ouvrir plusieurs connexions SSH par exemple.
Aussi, si la connexion réseau coupe, lors de la reconnexion, on peut récupérer le shell tel qu'il était avant la perte de connexion.
Installation
Il suffit d'installer le paquet screen :
Red Hat / Fedora et dérivées (EPEL requis) :
Code BASH :
dnf install screen
Debian / Ubuntu :
Code BASH :
apt install screen
Gentoo :
Code BASH :
app-misc/screen
Utilisation simple
Créer un screen
Pour créer un nouveau terminal :
Code BASH :
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
Voir les screens créés
Pour consulter les screens créés :
Code BASH :
screen -ls
On a leur nom et leur numéro unique.
Se rattacher à un screen créé
Pour revenir sur un screen détaché :
Code BASH :
screen -r nom
ou bien, si plusieurs screens ont le même nom, on peut les récupérer avec leur numéro :
Code BASH :
screen -r num
Si on veut se rattacher à un screen déjà attaché (si on est plusieurs à vouloir se rattacher au screen ou si on a perdu une connexion et que le screen est resté "attaché" à une session fantôme) :
Code BASH :
screen -x nom
Cela est pratique pour suivre sur plusieurs consoles des manipulations d'un collègue en étant géographiquement éloigné ou dans le cadre de formations.
Quitter un screen
Pour quitter un screen, il suffit de faire dans celui-ci la commande exit comme si on fermait une console normale. On revient alors sur le shell qui a lancé la commande screen précédemment.
Si on veut tuer un screen détaché (pour une raison X ou Y) :
Code BASH :
screen -X -S nom 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 :
Code BASH :
screen -dmS nom commande
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 pour un utilisateur de la machine.
Pour celà, on combine su et screen :
Code BASH :
su - utilisateur -c 'screen -dmS titre commande'
Naviguer dans un screen
Si on souhaite remonter dans un screen et que la console est trop petite, la molette de la souris ne fonctionne pas.
Il faut donc passer en "copy mode" avec Ctrl+a et [
Ensuite voici les combinaisons possibles :
Page Up et Page Down : Monter ou Descendre d'une page
Pour quitter ce mode : q
Utilisation avancée
Gérer plusieurs terminaux dans un screen
Il est possible d'utiliser screen de façon plus avancée, et de lancer plusieurs terminaux dans un même screen (comme des onglets dans une fenêtre).
Pour lancer un autre terminal dans un screen créé précédemment : Ctrl + a puis c
On notera que dans le titre de la fenêtre de l'émulateur de terminal "screen 1 est indiqué".
On va pouvoir basculer entre ces terminaux via les raccourcis suivants :
Ctrl + a puis n : Aller au terminal suivant
Ctrl + a puis p : Aller au terminal précédent
Ctrl + a puis 1 : Aller au terminal numéro 1 (Fonctionne de 0 à 9)
Ctrl + a puis " : Liste les terminaux actifs dans le screen pour s'y rendre
Ctrl + a puis A : Renommer un terminal pour le retrouver plus facilement
Splitter l'écran
Il est possible de splitter l'écran de screen en plusieurs terminaux. Ce qui permet, sur 1 écran, d'avoir 2 terminaux. Cela peut être utile dans certains cas.
Pour splitter en 2 verticalement : Ctrl + a puis | (AltGr+6)
Pour splitter en 2 horizontalement : Ctrl + a puis S
Pour basculer sur les différents terminaux de ce screen splitté : Ctrl + a puis TAB
La zone ouverte est vierge, on lancera un screen avec le shell via Ctrl + a puis c
Une fois le shell quitté, la zone est toujours là. Pour la fermer Ctrl + a puis X
En savoir plus sur screen
Dans un screen : Ctrl + a puis ?
Depuis le shell :
Code BASH :
man screen