Comment terminer une session Linux screen

LinuxBeginner
Pratiquer maintenant

Introduction

Ce tutoriel vous fournira une vue d'ensemble des bases de Linux Screen, un multiplexeur de terminal puissant qui vous permet de créer, de gérer et de naviguer dans plusieurs sessions de terminal au sein d'une seule fenêtre. Vous apprendrez comment démarrer, détacher et rattacher des sessions Screen, et explorerez les applications pratiques de cet outil polyvalent.

Comprendre les bases de Linux Screen

Linux Screen est un puissant multiplexeur de terminal qui vous permet de créer, de gérer et de naviguer dans plusieurs sessions de terminal au sein d'une seule fenêtre. Il offre un moyen d'exécuter plusieurs commandes ou applications simultanément, de les maintenir en cours d'exécution en arrière-plan et de basculer entre elles de manière transparente.

L'un des principaux cas d'utilisation de Linux Screen est de permettre des sessions persistantes. Cela signifie que vous pouvez démarrer un processus de longue durée, vous détacher de la session et vous y rattacher ultérieurement, même depuis un emplacement ou un appareil différent. Ceci est particulièrement utile pour des tâches telles que la gestion de serveurs à distance, l'exécution de scripts automatisés ou le maintien de processus de longue durée qui ne doivent pas être interrompus.

Une autre caractéristique clé de Linux Screen est sa capacité à prendre en charge les sessions partagées. Cela permet à plusieurs utilisateurs de se connecter à la même session Screen, ce qui favorise la collaboration et l'assistance à distance. Cela peut être particulièrement utile dans les scénarios où plusieurs membres de l'équipe doivent travailler sur le même projet ou résoudre un problème ensemble.

Pour démontrer l'utilisation de base de Linux Screen, commençons une nouvelle session Screen. Ouvrez votre terminal et tapez la commande suivante :

screen

Vous êtes maintenant à l'intérieur d'une nouvelle session Screen. Vous pouvez savoir que vous êtes dans une session Screen car le terminal peut sembler légèrement différent, ou vous pouvez voir un message de bienvenue.

Maintenant, exécutons une simple commande à l'intérieur de cette session Screen. Nous utiliserons la commande top pour voir les processus en cours d'exécution.

top

Vous devriez voir la sortie de top affichant les processus système.

top - HH:MM:SS up  X days, HH:MM,  X users,  load average: X.XX, X.XX, X.XX
Tasks: XXX total,   X running, XXX sleeping,   X stopped,   X zombie
%Cpu(s):  X.X us,  X.X sy,  X.X ni, XX.X id,  X.X wa,  X.X hi,  X.X si,  X.X st
MiB Mem :  XXXX.X total,  XXXX.X free,   XXX.X used,  XXXX.X buff/cache
MiB Swap:     0.0 total,     0.0 free,     0.0 used.  XXXX.X avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   XXXX labex     20   0  XXXXXX  XXXXX  XXXXX S   X.X   X.X   X:XX.XX top
   XXXX labex     20   0  XXXXXX  XXXXX  XXXXX S   X.X   X.X   X:XX.XX zsh
   ...

Pour quitter la commande top, appuyez sur q.

Maintenant, détachons-nous de cette session Screen. Cela laissera la session en cours d'exécution en arrière-plan. Pour vous détacher, appuyez sur Ctrl+A suivi de d.

Ctrl+A, d

Vous devriez voir un message indiquant que vous vous êtes détaché de la session Screen.

[detached from ...]
Illustration of detaching from Screen session

Vous êtes maintenant de retour dans votre session de terminal d'origine. La session Screen avec la commande top (que vous avez quittée) est toujours en cours d'exécution en arrière-plan.

Lister et se rattacher aux sessions Screen

Maintenant que vous vous êtes détaché d'une session Screen, apprenons à lister les sessions en cours d'exécution et à nous rattacher à l'une d'elles.

Pour lister toutes les sessions Screen en cours d'exécution, utilisez la commande screen -ls dans votre terminal.

screen -ls

Vous devriez voir une sortie similaire à celle-ci, montrant votre session détachée :

There is a screen on:
        XXXXX.pts-X.labex       (Detached)
X Sockets in /run/screen/S-labex.

La sortie affiche l'ID de session (par exemple, XXXXX.pts-X.labex) et son état (Detached - Détachée).

Pour vous rattacher à la session Screen la plus récemment détachée, utilisez la commande screen -r.

screen -r

Vous devriez maintenant être de retour à l'intérieur de votre session Screen. Puisque vous avez quitté top à l'étape précédente, vous verrez probablement une invite de terminal standard dans la session Screen.

Illustration of reattaching to Screen session

Si vous avez plusieurs sessions Screen en cours d'exécution, vous pouvez vous rattacher à une session spécifique en fournissant son ID de session après la commande screen -r. Par exemple, si l'ID de session est 12345, vous utiliserez :

screen -r 12345

Pour ce lab, comme vous n'avez probablement qu'une seule session, screen -r est suffisant.

Maintenant que vous êtes de retour dans la session Screen, quittons-la correctement. Vous pouvez le faire en tapant exit dans la session Screen.

exit

Cela mettra fin à la session Screen et vous ramènera à votre terminal d'origine.

Vous pouvez vérifier que la session est fermée en listant à nouveau les sessions Screen :

screen -ls

Vous devriez voir une sortie indiquant qu'il n'y a aucune session Screen en cours d'exécution :

No Sockets in /run/screen/S-labex.
Output showing no running sessions

Terminer une session Screen

Dans l'étape précédente, vous avez appris à quitter une session Screen de l'intérieur de la session en utilisant la commande exit. Cependant, il peut arriver que vous ayez besoin de terminer une session Screen depuis l'extérieur de la session, par exemple, si une session ne répond pas ou si vous souhaitez simplement la fermer sans vous y rattacher.

Pour terminer une session Screen spécifique depuis votre terminal d'origine, vous pouvez utiliser la commande screen -X -S [session_id] quit. Vous aurez besoin de l'ID de session, que vous pouvez obtenir avec screen -ls.

Tout d'abord, démarrons une nouvelle session Screen afin d'en avoir une à terminer.

screen

Maintenant, détachez-vous de cette session en utilisant Ctrl+A, d.

Ctrl+A, d

Listez les sessions en cours d'exécution pour obtenir l'ID de session.

screen -ls

Notez l'ID de session à partir de la sortie (par exemple, XXXXX.pts-X.labex).

Maintenant, utilisez la commande screen -X -S [session_id] quit pour terminer la session. Remplacez [session_id] par l'ID réel que vous avez noté.

screen -X -S XXXXX.pts-X.labex quit

Vous ne devriez voir aucune sortie si la commande réussit.

Pour confirmer que la session a été terminée, listez à nouveau les sessions Screen.

screen -ls

Vous devriez voir une sortie indiquant qu'il n'y a aucune session Screen en cours d'exécution.

No Sockets in /run/screen/S-labex.

Cette méthode est utile pour forcer la fin d'une session Screen lorsque vous ne pouvez pas y accéder directement.

Illustration for terminating Screen session

Résumé

Linux Screen est un outil précieux pour gérer et maintenir des sessions de terminal persistantes. En comprenant comment créer, détacher, lister, rattacher et terminer des sessions Screen, vous pouvez exécuter des processus de longue durée, collaborer avec les membres de l'équipe et vous assurer que vos tâches critiques continuent de s'exécuter même lorsque vous n'êtes pas directement connecté au terminal. Ce tutoriel a couvert les concepts essentiels et des exemples pratiques d'utilisation de Linux Screen, vous fournissant les connaissances nécessaires pour améliorer votre productivité et rationaliser vos flux de travail basés sur le terminal.