
L'écran ou écran GNU est un multiplexeur de terminal. En utilisant cela, vous pouvez exécuter n'importe quel nombre d'applications basées sur la console, de shells de commande interactifs, d'applications basées sur des cours, etc. Vous pouvez utiliser screen pour continuer à exécuter le programme après avoir accidentellement fermé le terminal, ou même après vous être déconnecté et plus tard reprendre où que vous soyez.
Un exemple pratique est celui où vous exécutez une tâche sur une machine Linux distante dans laquelle vous avez une session ssh. Plusieurs fois, vous avez vu cette session ssh se terminer et vous ne pouvez plus travailler. Voici l'utilitaire d'écran pour aider à reprendre les sessions.
Comment fonctionne l'écran ?
Lorsque screen est appelé, il crée une fenêtre unique contenant un shell (ou la commande spécifiée) puis s'écarte de votre chemin afin que vous puissiez utiliser le programme comme vous le feriez normalement. Ensuite, à tout moment, vous pouvez créer de nouvelles fenêtres (plein écran) avec d'autres programmes (y compris plus de shells), fermer la fenêtre actuelle, afficher une liste des fenêtres actives, copier du texte entre les fenêtres, basculer entre les fenêtres, etc. .
Screen gère une session composé d'une ou plusieurs fenêtres contenant chacun un shell ou un autre programme. De plus, l'écran peut diviser l'affichage d'un terminal en plusieurs régions , chacun affichant le contenu d'une fenêtre. Toutes les fenêtres exécutent leurs programmes de manière totalement indépendante les unes des autres. Les programmes continuent de s'exécuter lorsque leur fenêtre n'est pas visible actuellement et même lorsque toute la session d'écran est détachée du terminal de l'utilisateur. Ceci est pratique pour éviter une session de temporisation ssh involontaire.
Voyons maintenant comment utiliser cet utilitaire sous Linux.
1) Appeler de nouvelles fenêtres
Si la commande screen n'est pas déjà présente sur votre système, vous pouvez l'installer avec la commande ci-dessous.
Sur Debian
# apt-get install screen
Sur Centos
# yum install screen
Vous pouvez démarrer screen simplement en tapant screen à l'invite de commande. Cette commande d'écran ouvrira une nouvelle fenêtre dans l'écran.
# screen
Vous pouvez démarrer une nouvelle fenêtre dans l'écran et donner également un nom à la fenêtre, par exemple en altitude. Il crée une session identifiée par ce nom. Le nom peut être utilisé pour se rattacher ultérieurement.
# screen -S aloft
Notez que vous pouvez effectuer tout votre travail comme si vous étiez dans l'environnement CLI normal.
2) Lister tous les processus d'écran
Comme nous sommes en mesure de démarrer de nouvelles fenêtres dans l'écran, il est possible d'afficher les écrans actuellement ouverts, y compris ceux qui s'exécutent en arrière-plan. Il listera toutes les sessions d'écran existantes.
# screen -ls
There is a screen on:
10437.aloft (Attached)
1 Socket in /var/run/screen/S-root.
3) Commande principale de l'écran
Il est possible de fonctionner avec l'écran en utilisant certaines commandes. Nous allons lister ci-dessous les principales commandes les plus utiles.
Ctrl-a
suivi dec
:créer une nouvelle fenêtreCtrl-a
suivi dew
:affiche la liste de toutes les fenêtres actuellement ouvertesCtrl-a
suivi deA
:renommer les fenêtres en cours. Le nom apparaîtra lorsque vous listerez la liste des fenêtres ouvertes avecCtrl-a
suivi dew
.Ctrl-a
suivi den
:passe aux fenêtres suivantesCtrl-a
suivi dep
:aller aux fenêtres précédentesCtrl-a
suivi de Ctrl-a :retour aux dernières fenêtres utilisées.Ctrl-a
suivi d'un chiffre de 0 à X :aller sur la fenêtre n° X.Ctrl-a
suivi de"
:choisissez les fenêtres dans lesquelles passer.Ctrl-a
suivi dek
:fermer les fenêtres en cours (kill)Ctrl-a
suivi deS
:divise les fenêtres courantes horizontalement. Pour basculer entre les fenêtres, faitesCtrl-a
suivi deTab
.Ctrl-a
suivi de|
:divise les fenêtres courantes verticalementCtrl-a
suivi ded
:détacher une session screen sans l'arrêterCtrl-a
suivi der
:rattachez une session d'écran détachéCtrl-a
suivi de[
:lancer le mode copieCtrl-a
suivi de]
:coller le texte copié
4) Afficher le paramètre d'écran
Vous pouvez lister tous les paramètres de l'écran pour obtenir de l'aide. Pour cela, tapez Ctrl-a
suivi du caractère ?
. Il affichera une liste de toutes les commandes.

5) Séance de détachement
Le meilleur avantage de la commande screen est la possibilité de détacher une session screen. Vous pouvez démarrer une session d'écran sur un ordinateur au bureau, détacher la session du terminal local, rentrer chez vous, vous connecter à distance à notre ordinateur de bureau et rattacher la session d'écran au terminal de notre ordinateur personnel. Pendant ce temps, tous les travaux sur votre ordinateur de bureau ont continué à s'exécuter. Cette fonction est utilisée pour éviter la perte de données qui se produit soudainement lors d'une connexion ssh interrompue.
Pour bien comprendre de quoi on parle, prenons un exemple. Nous lançons un processus d'installation.

Nous allons maintenant détacher l'écran avec Ctrl-a
suivi de d
. Nous pouvons vérifier avec la commande ci-dessous.
# screen -ls
There is a screen on:
12449.win (Detached)
1 Socket in /var/run/screen/S-root.
Il est possible de détacher l'écran avec screen -d
commande suivie de l'identifiant de l'écran ou de son nom. Cela signifie que vous devrez ouvrir une autre fenêtre ou console pour détacher la session si la console actuelle a un processus en cours. Vous devez d'abord lister l'écran actuellement attaché.
# screen -ls
There is a screen on:
13686.win200 (Attached)
1 Socket in /var/run/screen/S-root.
Maintenant sur un nouveau terminal, entrez la commande ci-dessous.
# screen -d 13686
ou vous pouvez utiliser le nom
# screen -d win200
Vous aurez une sortie comme ci-dessous qui indique que l'écran a été détaché.
[remote detached from 13686.win200]
6) Rattacher une session
Après avoir détaché l'écran, il est possible de le rattacher avec la commande. Normalement, votre session d'écran fonctionne toujours, donc tous vos processus ne sont pas arrêtés. Avant de rattacher une session, vous devez lister la session comme ci-dessus, puis choisir la session à rattacher.
# screen -r 13686
ou vous pouvez utiliser
# screen -r win200

Vous pouvez voir qu'après avoir reconnecté la session, les fenêtres affichent la fin du processus qui est terminé. Cela signifie que vous pouvez travailler en ssh et détacher une session que vous rattacherez chez vous pour continuer votre processus de travail sans rien perdre.
7) Créer un nouveau shell interactif
Si vous avez des travaux à faire et que vous ne voulez pas perdre votre travail, il est possible de créer une nouvelle coque interactive. Vous pouvez facilement ouvrir des shells interactifs (numérotés de 0 à X) dans une fenêtre de terminal. Lorsque vous démarrez une nouvelle session, vous serez dans shell 0 .
Pour ce faire, vous devez créer de nouvelles fenêtres dans les fenêtres existantes avec Ctrl-a
suivi de c
. Vous aurez quelque chose comme ci-dessous.

Vous pouvez voir l'écran 3 en haut de la capture d'écran qui indique que nous sommes sur le troisième écran. En bas on peut aussi voir 3
8) Basculer entre les fenêtres d'écran
Lorsque vous avez ouvert plus d'une fenêtre d'écran, pour basculer entre chaque fenêtre, appuyez sur Control-a
suivi de space
ou le numéro de la coquille. Par exemple, pour passer au shell numéro 1, appuyez sur Control-a
puis 1
. Par exemple, nous allons nous déplacer sur le premier écran.

Le haut et le bas de la capture d'écran montrent que nous sommes sur le premier écran.
9) Fractionner les fenêtres
Pour avoir une vue globale de votre travail, vous devrez peut-être diviser vos fenêtres au lieu d'avoir plusieurs fenêtres. Ctrl-a
suivi de S
ou |
divisez votre écran horizontalement ou verticalement. Il est possible de répéter l'opération sans limite. Pour déplacer une autre fenêtre, utilisez Ctrl-a
suivi de Tab
.

Lorsque le curseur est sur les fenêtres du bas, vous pouvez créer une nouvelle fenêtre (Ctrl-a
suivi de c
) ou appeler une fenêtre existante (Ctrl-a
suivi d'un chiffre).

Pour fermer une fenêtre fractionnée, utilisez Ctrl-a
suivi de X
(Notez qu'il s'agit du caractère majuscule).
10) Reconnectez-vous à une session ssh déconnectée
Lors de votre première connexion,
- run screen pour démarrer une session screen. Vous obtenez un autre shell, exécutez des commandes dans celui-ci.
# screen -S remote_session
- Lorsque vous avez terminé, détachez la session screen puis déconnectez-vous en ssh
[detached from 20995.remote_session]
- Vous pouvez d'abord lister toutes les sessions d'écran
# screen -ls
There are screens on:
20995.remote_session (Detached)
14331.daby (Attached)
14134.mom (Detached)
3 Sockets in /var/run/screen/S-root.
- Reconnectez-vous à votre session d'écran et continuez votre travail
# screen -d -r remote_ression
La commande screen est la plus utilisée pour les sessions ssh car elle permet de continuer votre travail après une déconnexion sans perdre les processus en cours.
11) Faites défiler vers le haut dans les fenêtres d'écran
Étant donné que screen prend en charge la gestion de vos programmes distants, vous ne pouvez pas utiliser les fonctions de défilement de votre émulateur de terminal pendant l'exécution de screen. Vous devez utiliser les commandes Screen pour accéder au tampon de défilement.
- Utilisez
Ctrl-a
suivi deescape
- Appuyez sur
Up
etDown
touches fléchées ouPgUp
etPgDn
touches pour faire défiler la sortie précédente.

Vous pouvez voir où est mon curseur sur la capture d'écran. Chaque terminal virtuel a son propre tampon de défilement.
12) Voir le propriétaire de chaque session d'écran
L'screen -ls
ou screen -list
Les commandes ne vous montrent que vos propres sessions d'écran, même pour root. Autant que je sache, c'est aussi bon que possible pour l'écran lui-même.
Si vous voulez voir quelles sessions d'écran ont été démarrées par quels utilisateurs regardent dans chaque répertoire d'utilisateurs dans /var/run/screen/
.
# ls -lR /var/run/screen
/var/run/screen:
total 0
drwx------ 2 patrick patrick 60 Jun 17 20:47 S-patrick
drwx------ 2 root root 100 Jun 17 19:39 S-root
/var/run/screen/S-patrick:
total 0
srwx------ 1 patrick patrick 0 Jun 17 20:47 21941.pat_session
/var/run/screen/S-root:
total 0
srw------- 1 root root 0 Jun 9 16:45 14134.mom
srwx------ 1 root root 0 Jun 9 01:07 14331.daby
srwx------ 1 root root 0 Jun 17 20:46 20995.remote_session
13) Partager une session d'écran avec un seul compte
Vous pouvez avoir deux personnes connectées au même compte à partir d'emplacements distants. Ils peuvent facilement partager une session d'écran (donc ce que l'un tape, l'autre le voit et vice versa). Pour ce faire :
- Créer une session d'écran nommée :
# screen -d -m -S share_session
- Joindre à la session d'écran dans la fenêtre de votre terminal
# screen -x share_session
- Demandez à l'autre personne (connectée au même compte) de se joindre également à la session d'écran
# screen -x share_session
vous aurez exactement la même sortie affichée sur l'autre emplacement. Tout ce qui apparaîtra sur votre terminal apparaîtra également sur le terminal de l'autre utilisateur.
14) Verrouiller la session d'écran
Il est possible de verrouiller la session d'écran sans verrouiller l'utilisateur de la session normale. Cela signifie que vous pouvez laisser votre ordinateur et être sûr que personne ne viendra aux opérations non autorisées. Pour cela, utilisez la commande Ctrl-a
suivi de x
(Notez qu'il s'agit du caractère minuscule).
Screen used by root <root> on centos-01.
Password:
15) Terminer la session d'écran
Lorsque vous avez terminé et que vous souhaitez quitter la session screen, vous pouvez utiliser la commande Ctrl-a
suivi de k
. Vous serez invité à confirmer.

Vous pouvez également utiliser la commande exit. Si vous souhaitez enregistrer votre processus en cours, vous pouvez simplement détacher votre session d'écran avant de mettre fin à la session.
Conclusion
L'utilitaire d'écran peut surveiller une fenêtre pour l'activité ou l'inactivité. C'est très bien si vous téléchargez des fichiers volumineux, compilez ou attendez une sortie. À ce moment-là, si nécessaire, vous pouvez même démarrer un processus à partir d'un ordinateur à l'aide de la commande screen et le détacher lorsque vous avez terminé.