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 ...]
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.
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.
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.
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.