Articles

15 Commande Linux Screen pour traiter les sessions de terminal

Posted on

L’écran ou GNU screen est un multiplexeur de terminal. En l’utilisant, vous pouvez exécuter un nombre quelconque d’applications basées sur la console, des shells de commande interactifs, des applications basées sur le cours, etc. Vous pouvez utiliser screen pour continuer à exécuter le programme après que vous ayez accidentellement fermé le terminal, ou même après que vous vous soyez déconnecté et que vous ayez repris plus tard 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 screen pour aider à reprendre les sessions.

Comment fonctionne screen ?

Lorsque screen est appelé, il crée une fenêtre unique avec un shell dedans (ou la commande spécifiée) et se met ensuite hors de votre chemin pour que vous puissiez utiliser le programme comme vous le feriez normalement. Ensuite, à tout moment, vous pouvez créer de nouvelles fenêtres (plein écran) contenant d’autres programmes (y compris d’autres shells), tuer la fenêtre actuelle, afficher une liste des fenêtres actives, copier du texte entre les fenêtres, passer d’une fenêtre à l’autre, etc.

Screen gère une session constituée d’une ou plusieurs fenêtres contenant chacune un shell ou un autre programme. En outre, screen peut diviser l’affichage d’un terminal en plusieurs régions, chacune 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 à s’exécuter lorsque leur fenêtre n’est pas visible et même lorsque l’ensemble de la session screen est détachée du terminal de l’utilisateur. C’est pratique pour éviter une session de ssh timeout involontaire.

Vérifions maintenant comment utiliser cet utilitaire sous Linux.

1) Invoquer 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 lancer screen simplement en tapant screen à l’invite de commande. Cette commande screen va démarrer une nouvelle fenêtre dans l’écran.

# screen

Vous pouvez démarrer une nouvelle fenêtre dans l’écran et aussi donner un nom à la fenêtre, par exemple aloft. Cela crée une session avec identifiée par ce nom. Le nom peut être utilisé pour rattacher à un stade ultérieur.

# screen -S aloft

Notez que vous pouvez faire tout votre travail comme dans l’environnement CLI normal.

2) Lister tous les processus d’écran

Comme nous sommes capables de démarrer de nouvelles fenêtres dans l’écran, il est possible d’afficher les écrans actuellement ouverts, y compris ceux qui fonctionnent en arrière-plan. Il s’agira de lister toutes les sessions d’écran existantes.

# screen -lsThere is a screen on: 10437.aloft (Attached)1 Socket in /var/run/screen/S-root.

3) Commande principale de screen

Il est possible d’opérer avec screen en utilisant certaines commandes. Nous allons énumérer ci-dessous les principales commandes les plus utiles.

  • Ctrl-a suivi de c : créer une nouvelle fenêtre
  • Ctrl-a suivi de w : afficher la liste de toutes les fenêtres actuellement ouvertes
  • Ctrl-a suivi de A : renommer les fenêtres actuelles. Le nom apparaîtra lorsque vous listerez la liste des fenêtres ouvertes avec Ctrl-a suivi de w.
  • Ctrl-a suivi de n : aller aux fenêtres suivantes
  • Ctrl-a suivi de p : aller aux fenêtres précédentes
  • Ctrl-a suivi de Ctrl-a : retour aux dernières fenêtres utilisées.
  • Ctrl-a suivi d’un nombre de 0 à X : aller aux fenêtres n° X.
  • Ctrl-a suivi de " : choisir les fenêtres dans lesquelles se déplacer.
  • Ctrl-a suivi de k : fermer les fenêtres actuelles (kill)
  • Ctrl-a suivi de S : diviser les fenêtres actuelles horizontalement. Pour passer d’une fenêtre à l’autre, faites Ctrl-a suivi de Tab.
  • Ctrl-a suivi de | : diviser verticalement les fenêtres actuelles
  • Ctrl-a suivi de d : détacher une session écran sans l’arrêter
  • Ctrl-a suivi de r : rattacher une session écran détachée
  • Ctrl-a suivi de : coller le texte copié

4) Afficher les paramètres de l’écran

Vous pouvez lister tous les paramètres de l’écran pour vous aider. Pour cela, tapez Ctrl-a suivi du caractère ?. Il affichera une liste de toutes les commandes.

5) Détacher une session

Le meilleur avantage de la commande screen est la possibilité de détacher une session screen. On peut démarrer une session d’écran sur un ordinateur au bureau, détacher la session du terminal local, rentrer à la maison, se connecter à distance à notre ordinateur de bureau et rattacher la session d’écran au terminal de notre ordinateur à la maison. Pendant ce temps, tous les travaux sur votre ordinateur de bureau ont continué à s’exécuter. Cette fonction est utilisée pour éviter les pertes de données qui se produisent soudainement lors d’une connexion ssh abandonnée.

Pour bien comprendre de quoi nous parlons, 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 -lsThere is a screen on: 12449.win (Detached)1 Socket in /var/run/screen/S-root.

Il est possible de détacher l’écran avec la commande screen -d suivie de l’id 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 actuel attaché.

# screen -lsThere 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é.


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 rattaché la session, les fenêtres montrent la fin du processus qui est terminé. Cela signifie que vous pouvez travailler sur ssh et détacher une session que vous rattachez 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 un nouveau shell interactif. Vous pouvez facilement avoir quelques shells interactifs (numérotés de 0 à X) ouverts dans une fenêtre de terminal. Lorsque vous démarrez une nouvelle session, vous serez dans le shell 0.

Pour ce faire, vous devez créer de nouvelles fenêtres à l’intérieur de 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, ce qui indique que nous sommes sur le troisième écran. En bas, nous pouvons également 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 du numéro du shell. 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 pouvez avoir besoin de fractionner vos fenêtres au lieu d’avoir plusieurs fenêtres. Ctrl-a suivi de S ou | divisent 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 numéro).

Pour fermer une fenêtre divisée, utilisez Ctrl-a suivi de X (Notez qu’il s’agit du caractère majuscule).

10) Se reconnecter à une session ssh déconnectée

Lors de votre première connexion,

  • exécuter screen pour démarrer une session screen. Vous obtenez un autre shell, exécutez des commandes dans celui-ci.
# screen -S remote_session
  • Quand vous avez terminé, détachez la session écran puis déconnectez-vous du ssh

  • Vous pouvez d’abord lister toutes les sessions écran
  • Reconnectez-vous à votre session écran et continuez votre travail
# screen -d -r remote_ression

La commande screen est la plus utilisée pour la session ssh car elle permet de continuer votre travail après une déconnexion sans perdre les processus en cours.

11) Faire défiler vers le haut dans les fenêtres screen

Puisque 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 lorsque vous exécutez screen. Vous devez utiliser les commandes screen pour accéder au tampon de retour de défilement.

  • Utiliser Ctrl-a suivi de escape
  • Appuyer sur les commandes Up et Down ou les touches fléchées PgUp et PgDn pour faire défiler les sorties précédentes.

Vous pouvez voir où se trouve mon curseur sur la capture d’écran. Chaque terminal virtuel a son propre tampon de scrollback.

12) Voir le propriétaire de chaque session d’écran

Les commandes screen -ls ou screen -list ne vous montrent que vos propres sessions d’écran même pour root. Pour autant que je sache, c’est tout ce qu’il y a de mieux pour l’écran lui-même.

Si vous voulez voir quelles sessions d’écran ont été lancées par quels utilisateurs regardez dans chaque répertoire d’utilisateurs dans /var/run/screen/.

13) Partager une session d’écran avec un seul compte

Vous pouvez avoir deux personnes connectées au même compte à partir de sites distants. Elles peuvent facilement partager une session d’écran (donc ce que l’une tape l’autre voit et vice versa). Pour ce faire :

  • Créer une session d’écran nommée :
# screen -d -m -S share_session
  • Attachez-vous à la session d’écran dans votre fenêtre de terminal
# screen -x share_session
  • D’avoir l’autre personne. (connectée au même compte) s’attache également à la session é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 écran

Il est possible de verrouiller la session écran sans vous verrouiller l’utilisateur de la session normale. Cela signifie que vous pouvez quitter votre ordinateur et être sûr que personne ne viendra effectuer des opérations non autorisées. Pour ce faire, utilisez la commande Ctrl-a suivie de x (Notez qu’il s’agit du caractère minuscule).

Screen used by root <root> on centos-01.Password:

15) Terminer la session écran

Quand vous avez terminé et que vous voulez quitter la session écran, vous pouvez utiliser la commande Ctrl-a suivie de k. Une confirmation vous sera demandée.

Vous pouvez également utiliser la commande exit. Si vous voulez sauvegarder votre processus en cours, Vous pouvez simplement détacher votre session écran avant de mettre fin à la session.

Conclusion

L’utilitaire écran peut surveiller une fenêtre pour l’activité ou l’inactivité. C’est idéal si vous téléchargez des fichiers volumineux, si vous compilez ou si vous attendez une sortie. À ce moment-là, si nécessaire, vous pouvez même lancer un certain processus à partir d’un ordinateur en utilisant la commande screen et le détacher lorsque vous avez terminé.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *